看板 java 關於我們 聯絡資訊
※ 引述《tatibana31 (橘三十一)》之銘言: : ※ 引述《tatibana31 (橘三十一)》之銘言: : 除了H45大大提供的方法,今早失眠時,想到的方法也有效,至少沒問題了。 : (但是我的程式卻被遞迴給毀了,結果procedure()這一段重寫) : 我多加了一個變數 : public long previousTime; : public void procedure() : { : if(computer){ : Action_A(); Action_B(); Drawing(); : computer = false; : procedure(); : }else if(!computer){ : Action_A(); mouseControl = true; : } : } : 滑鼠的程式碼為: : public void mouseClicked(mouseEvent m) : { : if(mouseControll && : System.currentTimeMillis() - previousTime > 500){ : Action_B(); Drawing(); mouseControll = false; : previousTime = System.currentTimeMillis(); : computer = true; : procedure(); : } : } : 這樣就解了....害我想了一整晚..找了一整晚的蟲....(至少測試到現在都沒問題) : 500那個數字,或許可以再低一點.... 你這個程式的問題不只是處理滑鼠方面而已。 如果你的程式設計如同 H45 形容的那樣:你讓 time consuming task(比如電腦在 計算下一步棋)執行在 event-dispatching thread,那麼這個程式在 computer turn 時,程式中的圖形元件任一部份被其他東西遮蔽過後,都會沒有辦法復原外觀,得 等到電腦計算完棋步(假設是棋奕遊戲)並走完棋子後,才能夠補上遺失的外觀。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.137.130