如何覆盖TweenMax中的延迟?

时间:2017-04-25 17:28:40

标签: actionscript-3 tweenmax

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

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 个答案:

答案 0 :(得分:1)

我无法重现您遇到的第一个问题,即pauseresume延迟问题。我尝试了一个简单的补间,延迟4秒,并能够毫不拖延地暂停和恢复补间。

对于restart的另一个问题,TweenMax restart函数需要几个参数,第一个参数是includeDelay:Boolean,默认设置为false。将此属性设置为true可以解决问题。

摘自文档:

  

includeDelay:Boolean(默认= false) - 确定是否   延迟(如果有的话)在重新启动时很荣幸。例如,如果补间有   延迟1秒,如新的TweenLite(mc,2,{x:100,延迟:1});和   然后调用restart(),它会立即开始,但是   restart(true)将导致延迟被尊重,因此不会   再开始一秒钟。

可以找到完整的文档here

因此,以下代码应修复重启问题:

myTween.restart(true);

对于您的第一个问题,我建议您创建一个最小的方案来重现它,如果是,请在此处发表评论。

希望这会有所帮助。欢呼声。