我正在使用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);
}
答案 0 :(得分:1)
我无法重现您遇到的第一个问题,即pause
和resume
延迟问题。我尝试了一个简单的补间,延迟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);
对于您的第一个问题,我建议您创建一个最小的方案来重现它,如果是,请在此处发表评论。
希望这会有所帮助。欢呼声。