Smalltalk 将变形从点A移动到点B

Smalltalk 将变形从点A移动到点B,smalltalk,pharo,Smalltalk,Pharo,您将如何在Pharo Smalltalk中实现Morph>#moveTo:inSteps:?假设步骤之间存在硬编码延迟。也不必担心世界的更新(比如说,它将在后台分叉)。我只关心算法 从那时起,我想到: Morph>>#moveTo: pointB inSteps: anInteger | deltaX deltaY | deltaX := (pointB x - self center x) / anInteger. deltaY := (pointB y

您将如何在Pharo Smalltalk中实现Morph>#moveTo:inSteps:?假设步骤之间存在硬编码延迟。也不必担心世界的更新(比如说,它将在后台分叉)。我只关心算法

从那时起,我想到:

Morph>>#moveTo: pointB inSteps: anInteger

    | deltaX deltaY |
    deltaX := (pointB x - self center x) / anInteger.
    deltaY := (pointB y - self center y) / anInteger.

    anInteger timesRepeat: [ 
        self align: self center with: self center + (deltaX @ deltaY).
        10 milliSeconds asDelay wait ].

但我想知道我是否在核心中遗漏了一些东西,并重新发明了轮子…

你的算法有效吗?另外,当一个整数很大时,它会冻结UI吗?不,缺少一个$+,谢谢。它正在工作。此外,在这种情况下它确实冻结了UI,但请注意,我说过假设它将在后台运行。我的问题更多的是Pharo core是否包含关于沿线性路径移动的API。