在Tween.js中暂停时间

时间:2016-02-23 13:00:21

标签: javascript tween.js

我一直试图为所有补间实施全局暂停。如果在我的动画循环中,我只是不更新​​TWEEN,它会停止但是在我取消暂停后跳到它应该具有的位置,好像我从未暂停过。

TWEEN.update(时间);

要解决这个问题,我希望有一个单独的时间轴作为更新功能的参数。我尝试创建一个不同的值并单独更新它,但补间根本不会启动。

3 个答案:

答案 0 :(得分:0)

所以这就是最终工作的东西,想知道是否有一种更优雅的方式来使用Tween的内部变量,如elapsed

var delta = 0;
var tmp = 0;
var recorded = false;

function animate(timestamp) {
 if(paused){
   if(!recorded) {
     tmp=timestamp;
     recorded=true;
   }
 } 
 else {
   if(recorded){
     delta += timestamp-tmp;
     recorded=false;
   }
   TWEEN.update(timestamp-delta);
}

答案 1 :(得分:0)

保留TWEEN.update(time)中的时间将暂停补间。 @Eugene是正确的。

  1. 缓存暂停时间;
  2. TWEEN.update(timenow-暂停时间)。

有关更多详细信息,请参见:

https://github.com/tweenjs/tween.js/issues/341#issuecomment-447653541

答案 2 :(得分:0)

今天我写了一些小代码,可以帮助您暂停补间。

//First you need set some id for your tween animation.
var myTween = createjs.Tween.get(your_object).to({your_animation_params} ...);

//When you need to paused your tween by some event
//just get this object and set it on the same coordinates(by example),
//with time animation = 0 to have accses to use Pause method
c.Tween.get(your_object).to({x:your_object.x}, 0).pause(myTween);

//Later you can just play(unpause) it again using same trick
c.Tween.get(your_object).to({x:your_object.x}, 0).play(myTween);