好吧,所以我想弄清楚什么时候将一个孩子添加到一个动画片段“x”,并从这个“x”动画片段中处理/绕开这个动作。
我尝试重写addChild和addChildAt at at prevail。通过闪存放置在舞台上的动画片段仍然不会触发addChild或addChildAt。但是,跟踪this.numChildren
会正确显示“2”。
任何提示?
答案 0 :(得分:2)
您可以为x影片剪辑的“已添加”事件添加事件侦听器。
x.addEventListener(Event.ADDED, addHandler);
function addHandler(e:Event){
// your code here
}
此链接可能更好地解释: AS3.0 – Event.ADDED and Event.ADDED_TO_STAGE
文档也是一个很好的资源: flash.events.Event
答案 1 :(得分:1)
您可以通过执行以下操作来覆盖动画片段的默认方法:
创建一个扩展movieclip的类:
package {
import flash.display.*;
public class SuperMovieClip extends MovieClip {
public function SuperMovieClip() {
// constructor code
super();
}
override public function addChild(child:DisplayObject):DisplayObject {
trace("Hello, I am overriding add child");
// still perform the default behavior but you can do what ever you want.
return super.addChild(child);
}
}
}
然后在Flash中创建一个新的movieclip,并确保将其标记为Enable for ActionScript。类应该是您想要的任何名称,但基类必须是SuperMovieClip(或您为扩展类选择的名称)参见图像:
现在,当创建此基本类型的任何阶段剪辑时(无论它是在IDE中还是通过代码),它将是SuperMovieClip类型,并且无论何时调用addChild,它都将覆盖原始函数。
例如,我在设计时将此mc的一个实例从库中放到舞台上,并在时间轴上使用以下代码对其进行编译:
import flash.display.Sprite;
stage_mc.addChild(new Sprite());
输出Hello, I am overriding add child