我想實現一個名爲Piece>>userMovesFor:seconds
的方法,在「秒」時間內獲取鍵盤輸入並根據它,向現有對象發送一些消息以使它們進行一些計算(我的意思是它們不分支未來的執行流程)。在Pharo v3中等待
因此,從我所瞭解的系統中,我認爲該方法可以是這樣的示意圖。
Piece>>userMovesFor:seconds
| keyboardInterfacer |
keyboardInterfacer:=KeystrokeInterpreter on:self.
keyboardInterfacer takeKeyboardFocus .
self sleep:40 seconds.
keyboardInterfacer releaseKeyboardFocus .
KeystrokeInterpreter
將是Morph
一個子類。雖然重點是通過Morph>>handleKeystroke
來處理按鍵。
Piece>>sleep:seconds
只會等待「秒」的時間。
因此,在執行的某個時刻,Piece
實例將處於無所事事狀態,而Morph
實例處理鍵盤輸入。
我的問題是兩個。
1)有沒有辦法實現Piece>>sleep
這樣不會導致系統凍結(因此KeystrokeInterpreter
實例可以完成他的工作)?
我試過Duration>>wait
,並且自己也實現了自我呼叫等待消息,但是這兩種選擇都凍結了圖像中所有對象的執行。
2)有沒有更好的辦法暗示Piece>>userMovesFor
?
谷歌我沒有併發事物和事件處理一個職業球員,但你可以參閱http:// pillarhub .pharocloud.com /集線器/ UKO/concurrentProgrammingInPharo並嘗試'keyboardInterfacer takeKeyboardFocus'在岔路口,說不定就會有一定的效果。 – Uko 2014-12-11 07:14:05