0

探索 Tweenjs。我只想在舞台周围随机移动一些圆圈。我知道所有补间都是“确定性的”,这意味着它使用预先计算的速度值。所以我有两个互相调用的函数。补间完成时调用第二个函数。不幸的是,我收到了调用堆栈溢出错误。

我怎样才能让它永远运行并将圆圈无休止地移动到随机位置?

function tweenPosition(circle) {
    var xPosition = Math.random() * stageWidth
    var yPosition = Math.random() * stageHeight

    createjs.Tween.get(circle, {loop: false}).wait(0).to({x: xPosition, y: yPosition}, 1000, createjs.Ease.sineInOut).onComplete(tweenPositionComplete(this, xPosition, yPosition))
}
function tweenPositionComplete(circle, x, y) {
    circle.x = x
    circle.y = y
    tweenPosition(this)
}
4

1 回答 1

0

tweenPosition函数内部的 Tween 实例中,不使用方法,而是使用onComplete方法call,并将其添加到该 Tween 实例的末尾。

call (callback, [params], [scope])

对于您的代码:

.call(tweenPositionComplete, [circle, xPosition, yPosition])

您的 Tween 将如下所示:

createjs.Tween
        .get(circle, {loop:false})
        .wait(0)
        .to({x:xPosition, y:yPosition}, 1000, createjs.Ease.sineInOut)
        .call(tweenPositionComplete, [circle, xPosition, yPosition]); 

这个小提琴中,你可以看到它的作用。

另请参阅补间类(TweenJS API)

于 2017-07-10T13:52:35.867 回答