【问题标题】:need to stop remove a tween animation需要停止删除补间动画
【发布时间】:2015-09-09 14:06:50
【问题描述】:

我创建了一些补间,但我需要阻止它们

因为我需要使用新的补间重用一些资产。 然而,override:true 对某些人有帮助,

这是一个功能,一旦它被触发,带有计时器,它们就会播放,正如你所看到的那样有很多回调

window.autoSurfaces = function(){
if(!window.gameStarted){ 
console.log("autoSurfaces");
playAutoScene();//start playing function to control numbers and alpha of wheels
var delay = 700
var animtime = 500

currentTween = createjs.Tween.get(leaves_anim).to({alpha:.7}, animtime).wait(800).call(leavesOut);//call end frame function
tweenAray.push(currentTween)
console.log(currentTween)
 leaves_anim.gotoAndPlay("go");

    function leavesOut(){
    currentTween = createjs.Tween.get(leaves_anim).to({alpha:0}, animtime).wait(200).call(snowIn);
    tweenAray.push(currentTween)
    console.log(currentTween)
     }

    function snowIn(){
    currentTween = createjs.Tween.get(snow_anim).to({alpha:1}, animtime).wait(800).call(snowOut)
    tweenAray.push(currentTween)
    console.log(currentTween)
    snow_anim.gotoAndPlay("go");
     }

     function snowOut(){
    currentTween = createjs.Tween.get(snow_anim).to({alpha:0}, animtime).wait(delay).call(stopAll);
    tweenAray.push(currentTween)
    //console.log("fired");

     function stopAll(){
     playAutoOut();
     leaves_anim.gotoAndStop(0);
     snow_anim.gotoAndStop(0);

        }
     }
 }

}

然后我设置了 currentTween 的全局变量:

currentTween = createjs.Tween.get(target).to({alpha:.7}, animtime).wait(800).call(callHandler);

然后:

removeTweens(currentTween);

尝试设置一个数组 - tweenAray.push(currentTween)

tweenAray.removeTweens(currentTween)

还有 createjs.Tween.removeAllTweens();

偶数

createjs.Tween.removeAllTweens = function() {
var tweens = createjs.Tween._tweens;
for (var i=tweens.length-1; i>=0; i--) {
    tweens[i]._paused = true;
    tweens.splice(i,1);
}

};

什么都没有发生或者我得到错误 我正在从 Flash CS6 导出

任何指针?

干杯

【问题讨论】:

  • 有人知道吗?正在考虑使用时间线补间,我可以在其中停止所有计时器等吗?

标签: javascript createjs


【解决方案1】:

我不确定我是否完全理解你的问题,但这里有一个快速的尝试......

使用覆盖将导致新的补间停止任何具有相同目标的先前补间。例如。

createjs.Tween.get(foo).to({x:100, alpha:0.5}, 200); createjs.Tween.get(foo, {override:true}).to({x:500}, 500);

第二个补间将覆盖第一个补间,因为它们都以foo 为目标。第一个补间不会运行。

如果您想停止补间,只需保留对补间的引用,然后使用setPaused(true)。这有效地杀死了补间。

var tweensToKill = []; tweensToKill.push( new createjs.Tween.get(foo).etc(...) ); tweensToKill.push( new createjs.Tween.get(bar).etc(...) ); // ... later: while (tweensToKill.length) { tweensToKill.pop().setPaused(true); }

【讨论】:

  • 谢谢你 while 循环是最好的方法,你知道链接和时间线补间的任何教程或示例吗,还没有找到,但它可能是最好的未来的选择再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2011-01-29
相关资源
最近更新 更多