最初的目标是在event1上反向播放动画,通常在event2上播放动画。所以我使用了这段代码:
/* some imports */
public class Element extends MovieClip {
private var tween:Tween;
public function Element() {
tween = new Tween(this, "y", Regular.easeInOut, -this.height, 0, 0.7, true);
tween.stop();
this.addEventListener(event1, reverse);
this.addEventListener(event2, normal);
}
private function reverse(e:Event1) {
tween.yoyo();
}
public function normal(e:Event2) {
tween.stop();
tween.rewind();
tween.start();
}
}
现在我测试了它: 1.事件1发生,动画播放正常 2.事件2发生,动画反向播放 3.发生了Event1 1,反向播放了动画
由于一些奇怪的原因,yoyo在某种程度上是永久性的。我知道一些变通方法,比如为每个动画创建新的Tween,检查是否已经使用了yoyo等等。
这是预期的行为吗?在adobe API中,我读到了开始和结束道具,它们都有“在创建新的Tween实例或调用Tween.yoyo()方法时,此属性被设置为参数。”。我有手动重置它们吗?
我不希望使用Tweenmax,tweenlite或任何外部库。
答案 0 :(得分:1)
The manual说要让你的补间再次正常运行,请调用另一个yoyo()。不幸的是,补间本身并没有提供任何暗示,如果它现在是yoyo,所以你需要跟踪它。
private var tween:Tween;
private var tween_yoyo:Boolean;
private function reverse(e:Event1) {
if (!tween_yoyo) tween.yoyo();
else {
tween.stop();
tween.rewind();
tween.start();
}
tween_yoyo=true;
}
public function normal(e:Event2) {
if (tween_yoyo) tween.yoyo();
else {
tween.stop();
tween.rewind();
tween.start();
}
tween_yoyo=false;
}