dram.me

AtomMorph example

有了之前的基础,现在总算是可以理解AtomMorph class>>example了。代码很简单,先把它全贴出来。

AtomMorph class>>example
	|a|
	a := AtomMorph new openInWorld.
	a color: Color random.
	[
		1000 timesRepeat: [
			a bounceIn: World bounds.
			(Delay forMilliseconds: 50) wait.
		].
		a delete.
	] fork.

其它也没什么好说的,主要是来看看它是如何来实现移动的。这是通过timesRepeat:和bounceIn:这两个相结合实现的。

bounceIn:利用position和position:方法将点移动velocity距离,主要的代码都用于判断边界情况。也就是一个反弹操作。反弹时除了要对坐标进行特殊计算外,还需要对速度重新设置它的正负。