Flash 意外的TimeLineMax功能失调

Flash 意外的TimeLineMax功能失调,flash,actionscript-3,gsap,Flash,Actionscript 3,Gsap,我有一个对象,我想应用两个运动tween。我试图将它们附加到时间轴上,但我遇到了一些问题。当我测试它时,大多数时候我必须多次单击才能获得结果。如果我将第二个tween的经过时间设置为超过1秒(实际上超过0.5秒),也会发生奇怪的事情我在FlashCS4中工作,这个类链接到一个对象 package { import com.greensock.*; import com.greensock.easing.*; import flash.display.MovieClip; import flas

我有一个对象,我想应用两个运动tween。我试图将它们附加到时间轴上,但我遇到了一些问题。当我测试它时,大多数时候我必须多次单击才能获得结果。如果我将第二个tween的经过时间设置为超过1秒(实际上超过0.5秒),也会发生奇怪的事情我在FlashCS4中工作,这个类链接到一个对象

package {

import com.greensock.*;
import com.greensock.easing.*;
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Border extends MovieClip
{
     private var myTimeline : TimelineMax = new TimelineMax( );

    public function Border( ) {             
    }   

    public function doAnimate ( ev : MouseEvent )
    {
        myTimeline.append(TweenMax.to(this, 0.5, { width : 400 } ) );
        myTimeline.append(TweenMax.to(this, 0.5 , { height : 400 } ) ); // <--
    }
    public function deAnimate ( ev : MouseEvent )   
    {       
        myTimeline.reverse( );
    }
  }
}

您立即创建了TimelineMax实例(在构造函数上方),它立即开始播放,但直到稍后才填充它(显然是在MouseEvent.CLICK上)。所以你把你的孩子放在虚拟游戏头之前的时间线上。例如,假设时间线的播放头是5秒,当你把你的孩子放在0秒的位置时。这一点在下面的章节中有更全面的解释。解决方案非常简单:只需在doAnimate()方法中重新启动TimelineMax()。这显然会让虚拟的游戏头移到开头。还有其他一些方法可以解决这个问题,但我认为在你的情况下,最简单的方法就是重新启动时间线。可以在专门的论坛上自由提问(我们努力工作,以便及时得到答案)

谢谢,我想我知道我做错了什么。我没有按照你的建议去做,而是将TimelineMax类导入并初始化到doAnimate方法中,一切都很顺利。我只是想问一下,有没有一种方法可以在不直接启动TimelineMax类的情况下初始化TimelineMax类。附加或插入所需的两个类,然后按需启动它。重新启动方法是唯一的方法吗?当然,可以通过在变量中传递paused:true使TimelineMax最初暂停,例如:var tl:TimelineMax=new TimelineMax({paused:true});
package {

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

public class Document extends MovieClip {

    public function Document( )     {
        right.addEventListener( MouseEvent.CLICK , border.doAnimate );
        left.addEventListener( MouseEvent.CLICK , border.deAnimate );
    }
  }
}