我正在从AS2迁移到AS3并遇到此问题..
在我的项目中,我使用了主文档文件,它可以将多个嵌套动画作为单独的文件加载。在主文档中,我有一个全局函数,例如:
_global.onAnimationEnd(mc:MovieClip){...}
并且在动画中(可以嵌套)我只是称之为:
onAnimationEnd(this);
我是AS3的新手,但不知何故,AS3的正确方法是使用Event系统,但我有问题要做。是否有人可以帮助解决这么简单(AS2)的问题?
答案 0 :(得分:0)
AS3处理事件的方式与AS2方法完全不同。在AS3事件中,向上冒泡对象层次结构,然后向下返回到原始对象。如果在层次结构中有更多对象需要响应事件,则必须在收件人对象上设置事件侦听器,以便在事件冒泡时处理该事件。
O'Reilly出版的Colin Moock的书“Essential ActionScript 3.0”全面介绍了它。如果您现在需要快速修复,那会帮助不大......答案 1 :(得分:0)
最后我正在使用这种方法:
package com.oldes {
import flash.events.Event;
public class GameEvent extends Event {
public var data:Object;
public static var ANIMATION_END = "onAnimationEnd";
public function GameEvent(
type:String,
data: Object,
bubbles:Boolean=true,
cancelable:Boolean=false
){
super(type, bubbles, cancelable);
this.data = data;
}
override public function clone():Event {
return new GameEvent (type, data, bubbles, cancelable);
}
}
}
onAnimationEnd(this);
使用:
import com.oldes.GameEvent;
dispatchEvent(new GameEvent(GameEvent.ANIMATION_END,{anim: this}));
编辑:带动画的外部文件必须正确加载到正确的上下文中,但这是另一个AS3故事。