TweenJs - 单击时旋转矩形仅运行一次

TweenJs - rotate rectangle on click runs only once

我正在尝试在名为 TweenJs(CreateJs 套件的一部分)的 JavaScript 库中的 "click" 事件上创建简单的动画,但似乎动画仅在我第一次单击时更新显示在矩形上。动画第一次结束后,在每次下一次点击时,代码似乎是 运行,但显示静止不动(或不更新)。您可以在控制台中看到它记录了动画的开始和结束。

谁能帮我解释一下我的代码有什么问题,而且,一般来说,这是使用 stage.update() 的正确方法吗?

这是我的代码:

https://codepen.io/milan_d/pen/rNaJEKY?editors=1111

非常感谢!

问题是一旦你旋转它,它已经旋转到你在后续点击中指定的角度。

一个简单的解决方案是添加一个零持续时间的 to() 调用,当您点击它时会重置它。

createjs.Tween.get(square)
    .to({rotation:0}) // This one has no duration, so it is immediate
    .to({rotation:360},3000)
    .call(squareRotationComplete);

另一种选择是始终根据初始补间旋转它

createjs.Tween.get(square)
    .to({rotation:square.rotation + 360},3000)
    .call(squareRotationComplete);

最后,您可以使用 RelativePlugin。首先安装它,然后在您的 to() 调用中使用“+360”。

createjs.RelativePlugin.install(); // Run once
createjs.Tween.get(square)
    .to({rotation:"+360"},3000) // Note the value.
    .call(squareRotationComplete);

干杯!