[英]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.