********************************************************************************
问:当有两个sprite同时都监听了某一个Event,但是我想只让其中一个sprite监听这个事件
public class Event包
stopImmediatePropagation | () | 方法 |
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。此方法不会影响当前节点 (currentTarget
) 中的任何事件侦听器。相比之下,stopImmediatePropagation()
方法可以防止对当前节点中和后续节点中的事件侦听器进行处理。对此方法的其它调用没有任何效果。可以在事件流的任何阶段中调用此方法。
注意:此方法不会取消与此事件相关联的行为;
******************************************************************************************
问:有三个sprite(先在stage中添加1,再添加2,再3),完成后我对1中再添加一个1.1sprite,并addChild,可是1.1没有显示出来,这是为什么?
这里涉及到层的问题,3在最后添加到stage中,所以3会挡住2和2下面的child ,当然也挡住1和1下面的child。如果3是visible=false,它就不会挡住别的child,所以如果想让1.1显示,就必须把1.1添加到最外层里面去,也就是1.1变成4或者3.1
*********************************************************************************************
问:关于接口
答:接口为interface类型 无变量 且方法无逻辑操作,无参数,没有实际对象,只有依靠子类建立对象
有接口I,方法traceHandle(), A B C继承I,如想操作A B C子类中的traceHandle方法,可这样做:
var i:I=new A(); var i:I=new A(); var i:I=new A();
i.traceHandle(); i.traceHandle(); i.traceHandle();
结果 a b c
这样做就只建立了一个接口对象,省下了内存
***********************************************************************************
问:关于加载swf文件有两个方法。
答:在游戏中的大视图界面faceUI用的是Embed载入swf中的symbol ;
[Embed(source="assets/hehe.swf",symbol="test")]
这里的test是fla文件中的链接,可以在右下角按钮模块中找到
此方法缺点是加载很慢,影响加载进度,优点是可以完全加载进来,防止加载不完全的情况,如何引用swf中的控件呢?只需要定义一个最外面的moveClip,然后moveClip[控件名]即可对其控件引用。
第二种是用loader类进行swf的加载,不必要重新定义,直接取对象即可
var tempClip:MovieClip=loader.getChildAt(0) as MovieClip;
personClip=tempClip.getChildAt(0) as MovieClip;
this.addChild(personClip);
personClip.closeBtn.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
*************************************************************************************