as3 删除容器内对象和侦听

 
  
1 package com{
2 import flash.display.MovieClip;
3 import flash.events.Event;
4 dynamic public class removeCon extends MovieClip{
5 private var lis:Array; // 定义一数组保存侦听
6 public function removeCon() {
7 lis = new Array();
8 addEventListener(Event.REMOVED,remove); // 侦听删除事件
9 }
10
11 // 重写addEventListener,在增加侦听的时候..把相应的事件保存到数组
12 override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false , priority: int = 0 , useWeakReference:Boolean = false ): void {
13 lis.push([type,listener,useCapture]);
14 super.addEventListener(type,listener,useCapture, priority,useWeakReference);
15 }
16
17 // "自我毁灭"的方法
18 private function remove(e:Event): void {
19 if (e.currentTarget != e.target) {
20 return ;
21 }
22 stop();
23 // 删除子对象
24 trace( " 删除前有子对象 " ,numChildren);
25 while (numChildren > 0 ) {
26 removeChildAt( 0 );
27 }
28 trace( " 删除后有子对象 " ,numChildren);
29 // 删除动态属性
30 for ( var k:String in this ) {
31 trace( " 删除属性 " ,k);
32 delete this [k];
33 }
34
35 // 删除侦听
36 trace( " num= " + lis.length);
37 for ( var i:uint = 0 ; i < lis.length; i ++ ) {
38 trace( " 删除Listener " , lis[i]);
39 removeEventListener(lis[i][ 0 ],lis[i][ 1 ],lis[i][ 2 ]);
40 }
41 lis = null ;
42 }
43 }
44 }

使用方法:

 

 
  
1 import removeCon;
2 var mc:MovieClip = new removeCon();
3 mc.addEventListener(Event.ADDED,aaaa);
4 mc.addEventListener(Event.ADDED_TO_STAGE,aaaa);
5 mc.addEventListener(Event.ENTER_FRAME,aaaa);
6 mc.addEventListener(MouseEvent.CLICK,aaaa);
7 mc.addEventListener(MouseEvent.MOUSE_DOWN,aaaa);
8 mc.a = " http://www.manyu.cn/blog " ;
9 mc.b = " 我是动态属性2 " ;
10 mc.name = " 我是MC " ;
11 addChild(mc);
12 function aaaa(e:Event) {
13
14 }
15 removeChild(mc);
16 mc = null ;

 

转载于:https://www.cnblogs.com/xuwb/archive/2010/07/27/1786331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值