線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1265
推到 Plurk!
推到 Facebook!

拖曳的問題

尚未結案
dachura
一般會員


發表:2
回覆:3
積分:1
註冊:2004-03-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-03 23:50:44 IP:163.28.xxx.xxx 未訂閱
各位先進好 我在寫一個孔明棋遊戲 並練習用drag來實現下棋的動作 棋子是用image陣列動態產生的 本來我是在dragdrop事件裡 去看Source(我移的棋子)和Sender(我要移到的位置) 來決定這一歩動作是否合法 寫出來是正常能run 可是我想要在拿棋子的時候,真的看的出來有在拖的感覺 而不是只有dragCursor在動而已 所以我就在DragOver的事件裡去抓游標的位置讓棋子跟它動 到這邊也沒問題 可是這樣當我DragDrop的時候,sender和source卻變成了同一個 我猜是因為source一直擋在cursor的下面所以游標就把它當成sender了 總之這樣就不能依據sender去判斷現在拖到哪個位置 所以想請問大家有沒有辦法解決 讓我的source跟游標一起動,也可以知道移動到哪個棋格上面 我有想過再加一個OnMouseMove之類的事件去測滑鼠的位置 然後再換算出他停在哪個image(棋子或棋格)上 可是覺得這樣有點怪 所以先上來請教各位是不是有更好的方法 不好意思寫的有點囉唆 因為是新手怕有什麼地方遺漏了 謝謝耐心看完文章的人^^ 發表人 - taishyang 於 2004/05/04 00:20:53
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-04 09:41:07 IP:211.23.xxx.xxx 未訂閱
棋子的DragMode設為dmAutomatic,OnDragOver事件加入Accept = true; 棋盤也一樣,並利用棋盤的OnDragDrop事件傳進的int X, int Y取得棋子的位址. ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D ------------------------------- 發表人 - anpino 於 2004/05/04 16:39:19
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-04 14:53:26 IP:218.35.xxx.xxx 未訂閱
引言: 各位先進好 可是這樣當我DragDrop的時候,sender和source卻變成了同一個 我猜是因為source一直擋在cursor的下面所以游標就把它當成sender了 總之這樣就不能依據sender去判斷現在拖到哪個位置 所以想請問大家有沒有辦法解決 讓我的source跟游標一起動,也可以知道移動到哪個棋格上面 謝謝耐心看完文章的人^^ 發表人 - taishyang 於 2004/05/04 00:20:53
taishyang你好: 要不要試著用DragOver的事件中的X和Y來換算棋格的位置? 看看可不可行…
dachura
一般會員


發表:2
回覆:3
積分:1
註冊:2004-03-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-04 17:18:42 IP:163.28.xxx.xxx 未訂閱
我是用49個彼此相接的Image去排成7*7個棋格 再用兩種圖的切換來決定那格有棋或沒棋 所以棋格(或棋子)本身也算是棋盤 而dragover或dragdrop上的X和Y 表現的是當時游標停在某個Image裡的哪個位置的X,Y 也就是座標是針對"那一個"Image而定的 而不是整個7*7棋盤裡的座標    不過我還是乖乖的算座標定位置好了 可能是我一開始的設計方法就太爛了,哈哈    不過還是謝謝大大們的解答!
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-04 17:31:19 IP:211.23.xxx.xxx 未訂閱
建議你用TImage* [7][7]陣列紀錄棋盤上7*7個TImage物件, 並將這7*7個TImage物件的OnDragDrop設成同一個, 在OnDragDrop中用loop去找Sender是TImage* [7][7]中的哪一個, 找到後判斷上面有沒有棋子, 沒有的話,就將棋子放上去。 看你的描述, 你的程式不需要知道拖曳時棋子在整個7*7棋盤裡的座標是什麼, 而是哪個棋格(就是TImage* [7][7]中的哪一個)收到OnDragDrop (表示棋子在該棋格上)。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------
dachura
一般會員


發表:2
回覆:3
積分:1
註冊:2004-03-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-04 18:39:50 IP:163.28.xxx.xxx 未訂閱
其實我就是這樣做的 只是用的是一維陣列(因為不大會用二維的:P) 然後再用Tag去區別每個image 所以在ondragdrop裡只要去看sender的tag就行了 但是我改成棋子會跟游標一起動以後 在dragdrop的時候因為本來的棋子一直跟在游標下面 就會被游標判斷成它就是sender 那個動作就被判定無效了 因為抓不到我要的sender 所以才會想說用游標在整個7*7棋盤內的座標來反推回tag值 發表人 - dachura 於 2004/05/04 18:48:21
系統時間:2024-06-24 2:56:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!