2017-04-25 40 views
0

我在使用Greensock TweenMax时间轴的actionscript 3中工作。我有一个页面滚动两个按钮(回到顶部,并停止/播放按钮)。 滚动器会自动播放onLoad,延迟时间为4秒。当我按停止/播放按钮时,它不会停止延迟。它必须等待整整四秒才能发挥作用。此外,4秒延迟仅在滚轮首次运行时发生。每当滚动条重复时,我怎样才能获得4秒的延迟?我怎样才能获得停止/播放按钮来覆盖延迟和播放?我已经为此工作了两天,并尝试了各种技术(循环,定时器,延迟调用等),但都没有成功。如果有人有想法,我将不胜感激。如何覆盖TweenMax中的延迟?

1)开始的时间线代码:

myTween = new TweenMax(content_mc, 60, {delay:4, y:22, ease: Power0.easeNone, onComplete: restartFromTop }); 

2)该功能控制停止/播放按钮

private function toggler(e:MouseEvent = null):void 
    {   

      if (playState == true){ 
      toggleBtn.gotoAndStop(2); 
      myTween.pause(); 
      playState = false; 
      trace("MC is now paused and stopped"); 
     } 

      else if(playState == false) { 
      myTween.resume(); 
      toggleBtn.gotoAndStop(1); 
      playState = true; 
      trace("MC is resumed from pause"); 
     } 
    } 

3)该功能控制卷轴的重新起动时,它重复。

private function restartFromTop():void 
     {  
      myTween.restart() 
      playState = true; 
     } 

4)此功能控制回顶部按钮

private function backToTop(event:MouseEvent):void 
     { 
      myTween.reverse(); 

      if (playState == true){ 
       myTween.restart(); 
       myTween.resume();//stop animation 
       //toggleBtn.gotoAndStop(2);//changes button to pause 
       toggleBtn.buttonMode = true; 
       trace("page is scrolling"); 
      } 

      if (playState == false){ 
       myTween.restart(); 
       myTween.pause();//stop animation 
       trace("play button is paused"); 
       trace(timer); 
      } 

//Adds a hand cursor on the button and adds a click event to the button. 
      toggleBtn.buttonMode = true; 
      toggleBtn.addEventListener(MouseEvent.CLICK, toggler); 
     } 

回答

1

我无法重现您所面临的第一个问题,那就是延迟与pauseresume问题。我尝试了一个简单的补间,延迟了4秒,并且能够暂停并恢复补间,而不会有任何延迟。

对于restart其他问题,TweenMax restart功能需要几个参数,第一个是includeDelay:Boolean这是默认设置为false。将此属性设置为true会解决问题。从文档

摘录:

includeDelay:布尔(默认值= FALSE) - 确定重启时 延迟(如果有的话)是否被兑现。例如,如果补间有 延迟1秒,如新的TweenLite(mc,2,{x:100,delay:1});和 然后稍后重新启动()被调用,它将立即开始,但 重新启动(true)将导致延迟被授予,以便它不会 开始另一个1秒。

全部文档,可以发现here

所以,下面的代码应该可以解决你的重启问题:

myTween.restart(true); 

为了您的第一个问题,我建议你创建一个最小的场景重现,如果是这样,请在这里发表评论我的答案。

希望这会有所帮助。干杯。

+0

谢谢。它绝对有助于:) – latoyale