我有一个对象,我想应用两个补间动画。我尝试将它们附加到时间轴但我遇到了一些问题。当我测试它时,大多数时候我必须多次点击才能拥有结果。也发生了一件奇怪的事情,如果我设置第二个补间的经过时间超过1秒(实际上超过0.5)它就可以工作。我在flash cs4中工作,并且该类链接到一个Object。
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( );
}
}
}
主要课程
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 );
}
}
}
答案 0 :(得分:2)
您立即创建了TimelineMax实例(在构造函数上方),它立即开始播放,但是直到稍后才会填充它(显然在MouseEvent.CLICK上)。因此,您将补间定位在虚拟播放头的之前中。例如,假设当您在0秒的位置将补间放入时间线时,时间轴的播放头为5秒。在http://forums.greensock.com/viewtopic.php?f=1&t=3842&p=15044#p15044更全面地解释了这一点。解决方案非常简单:只需在doAnimate()方法中重新启动()TimelineMax即可。这显然会使虚拟播放头移动到开头。还有其他一些方法可以处理这个,但我认为在你的情况下最简单的事情是重启()时间轴。请随时在http://forums.greensock.com的专用论坛中提问(我们会努力在那里及时回答问题)。