宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS3]as3.0中触发ADDED_TO_STAGE事件源代码示例

2016-10-13 00:16:48 点击量:40 标签: 收藏本文

现有两个对象A和B,并且这两个对象都侦听了ADDED_TO_STAGE事件,如果在A对象的事件添加B对象到stage中,则B对象会触发两次ADDED_TO_STAGE,是什么原因导致的?有什么办法避免这个问题?

这是因为:事件处在目标阶段的时候添加子对象,子对象的侦听器被触发两次
解决办法就是在子对象的ADDED_TO_STAGE事件中先清除该事件,然后在REMOVED_FROM_STAGE事件里再次侦听。
A类:

  1. public class A extends Sprite { 
  2. public function A() { 
  3. addEventListener(Event.ADDED_TO_STAGE, eventHandler); 
  4. private function eventHandler(evt:Event):void { 
  5. removeEventListener(evt.type, eventHandler); 
  6. if (evt.type == Event.ADDED_TO_STAGE) { 
  7. trace("A"); 
  8. addChild(new B());//酷播cuplayer.com提示:添加B作为子对象 
  9. addEventListener(Event.REMOVED_FROM_STAGE, eventHandler); 
  10. }else { 
  11. addEventListener(Event.ADDED_TO_STAGE, eventHandler); 

B类:

  1. public class B extends Sprite { 
  2. public function B() { 
  3. addEventListener(Event.ADDED_TO_STAGE, eventHandler); 
  4. private function eventHandler(evt:Event):void { 
  5. removeEventListener(evt.type, eventHandler); 
  6. if (evt.type == Event.ADDED_TO_STAGE) { 
  7. trace("B");//www.cuplayer.com提示:只触发一次 
  8. addEventListener(Event.REMOVED_FROM_STAGE, eventHandler); 
  9. }else { 
  10. addEventListener(Event.ADDED_TO_STAGE, eventHandler); 

 

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室