Squeak Smalltalk中的动画

6
我有一个简单的Squeak Smalltalk变形物。 我想将它从x1,y1移动到x2,y2(动画)并持续5秒(或10秒)。
在Squeak Smalltalk中是否有内置的方法来创建动画?

1
请查看《Squeak/Pharo by Example》中的_Morphic_章节。 - MartinW
2个回答

8

是的,有一种内置的方法:

创建一个 Morph 的子类并实现两个方法:

  • stepTime(步骤之间的时间间隔(以毫秒为单位))和
  • step(定期发送到 Morph 中的步骤)

一个最小的示例:

Morph subclass: #MovingMorph
    instanceVariableNames: ''
    classVariableNames: ''
    category: 'MovingMorph'

MovingMorph>>stepTime

stepTime
    ^ 100

MovingMorph>>step

step
    self position: self position + (1@1)

现在打开一个MovingMorph在世界中(MovingMorph new openInWorld),通过startSteppingstopStepping控制动画。

7

虽然可以使用Morphic步进来展示动画,但是Animations Project更进一步,提供了一个简单的接口来使用短动画:

AnimPropertyAnimation new
   duration: 500;
   target: myMorph;
   property: #position; "There should be a message called #position:."
   startValue: 10@10;
   endValue: 100@100;
   start.

像淡入淡出或类似的效果更简单:

myMorph fadeOut.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接