[英]Squeak Smalltalk: Game loop
在許多語言中,您可以執行以下操作:
while true:
handle events like keyboard input
update game world
draw screen
(optional: delay execution)
雖然這遠非最佳,但它應該足夠簡單的游戲。
你是怎么在Squeak Smalltalk做到這一點的?
我可以閱讀鍵盤輸入並對其做出反應,如wiki.squeak.org所述 。 但是,如果我嘗試執行類似的東西
1 to: 10 do: [ :i | game updateAndDraw ]
所有事件只在循環執行后才被處理。
Morphic已經提供了主循環。 它在MorphicProject class>>spawnNewProcess
:
uiProcess := [
[ world doOneCycle. Processor yield ] repeat.
] newProcess ...
如果你深入了解doOneCycle
你會發現它
interCyclePause:
step
方法 您的代碼應該通過添加鼠標/鍵盤事件處理程序,動畫步驟方法和繪制重新顯示方法來掛鈎這些階段。 所有這些應該是你自己的游戲變形中的方法。 您可以在整個系統中找到示例。
要執行固定次數的操作:
10 timesRepeat: [game updateAndDraw]
while
語義上使用:
i := 5
[i > 0] whileTrue: [
i printNl.
i := i - 1.
]
使用語義創建永久循環,
[true] whileTrue: [something do]
您應該能夠通過使用Object >> #when:send:to:
message來利用Morphic事件循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.