as3中的addEventListener监听事件如何传参数

在flash cs3中,监听事件,比如:
**.addEventListener(Event.COMPLETE,hander);
function hander(event:Event):void

 

很多时候要向这个hander方法里传递参数。使程序更灵活。


下面有一个简单的方法:
**.addEventListener(Event.ENTER_FRAME,function(e:Event){ hander2(e,12,6); });//比如要传“12”“6”这个参数
hander2如下:
function hander2(event:Event,i:int,j:int):void {
 if ((event.target as  MovieClip).currentFrame == i) {
  event.target.gotoAndPlay(j);
  
 }
}

 

问题就解决了

 

还有,我在实际中有这么一个应用:

package {

  class Test extends Spire {

    

     public function tell() {

        var timer:Timer = new Timer(1000,1);

        timer.addEventListener(TimerEvent.Timer, function(event:Event) {

             this.dispatchEvent(new Event("time_out"));

        });

        timer.start();

     }

 

  }

}

 

这样就报错了,

TypeError: Error #1006: dispatchEvent is not a function. at MethodInfo-160()

 

然后我做了一些修改,将this.dispatchEvent()改成parent.dispatchEvent()

OK,错误就解决了。

 

当然你也可以把this.dispatchEvent()用一个直接的方法封装,然后timer直接回调那个方法,这也是我们经常使用的方式之一。

 

所以注意了,在内function里,this已经不是代指class了,而是变为外层的function。

 

关于GC回收的问题,请参考:http://blog.csdn.net/dengxingbo/archive/2010/02/02/5279624.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值