0

所以我有一大堆easel.js 对象,我将它们保存在一个数组中。

我想为每个对象链接一组补间然后,当每个补间链完成时,重置补间的属性并重新开始。这是我到目前为止所得到的:

function setObjectTween(tgt){
        createjs.Tween.get(tgt, { loop: false })
          .to({ x: randomOnStage("x", constraint[0],constraint[1]) }, randomInRange(100,1000), createjs.Ease.getPowOut(4))
          .to({ y: randomOnStage("y", constraint[0],constraint[1]) }, randomInRange(100,1000), createjs.Ease.getPowOut(4))
          .call(resetTween);

    }

    function resetTween(e){
        createjs.Tween.removeAllTweens(e.target);
        setObjectTween(e.target);
    } 

问题是 resetTween 似乎同时停止了所有剪辑的补间。我认为用这样的补间设置每个对象:

for(i=0;i<objpool1.length;i++){setObjectTween(objpool[i]);}

将保持每个对象的补间独立。当它到达最后时,它将调用重置函数,该函数将为该对象删除补间,然后重新运行设置,再次仅针对该对象,使用新的随机值再次启动补间。

为什么重置似乎只影响数组中的最后一个对象而不是为每个对象独立工作的任何想法(nb,所有数组对象第一次工作,但重置似乎重置了所有对象,然后只在数组中的最后一个对象)。

干杯,A.:

e2a:已排序。文档读取失败。感谢下面的回答!:o)

4

1 回答 1

1

这些removeAllTweens方法不接受任何参数。正在发生的事情是你正在杀死每个补间(防止resetTween其他补间随后调用),并且只有第一个完成的补间才能重新启动。

改为removeTweens改为。

function resetTween(e){
    createjs.Tween.removeTweens(e.target);
    setObjectTween(e.target);
} 

这是一个小提琴:http: //jsfiddle.net/6d9bckb4/

于 2016-09-09T18:32:41.157 回答