[转载]AS3)Flash(非Flex)开发中通过事件传递参数的一种方法

之前我发过一篇Flex开 发中通过事件传递参数的文章,前几天又使用flash开 发一个小东西遇到在flash中 传递参数的问题。

以下是一个小例子,有两个函数,test()函数是来使用Loader加载一张图片,我们侦听下载完成事件,并传递一 个数字111作为参 数。(当然这个参数你可以自己定义,类型随意,我这个参数和加载是无关的,只是想演示通过事件可以传递参数)

函数onLoaderComplete(i:int)是loader事件完成的侦听函数,并包含参数(i:int),要传递参数,它的返回值类型必须是Function,并且函数中要定义另一个函数来接收事件var fun:Funciton=funcion(e:Event){},花 括号中即可按照正常侦听函数一样操作事件结果,并可

操作传递进来的参数 i 。

这两个函数如下:

public function test():void {

       var n:int = 111;

       var my_Loader:Loader = new Loader();  

       my_Loader.load(new URLRequest(test.png));   

       my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderComplete(n));

}

public function onLoaderComplete(i:int):Function {

       var fun:Function=function(e:Event)  

       {

              trace(i);

              this.addChild = e.target.content;

       }            

       return fun;

}

============================================

另外一个例子:

舞台放个按钮,给按钮加个侦听,然后传一个参数 过去,我点按钮,在按钮点击事件处理函数中输出这个参数,同时我也输出事件类型:(注 意:这个例子是Flash CS5 AS3项目,可能和CS3、CS4看上去有区别)

代码:

效果:


-

关于事件的移除:

这种方式定义侦听后,可能会出现事 件侦听不好移除的问题,可以用这样的方式移除侦听:

EventDispatcher(event.currentTarget).removeEventListener(event.type, arguments.callee);

posted on 2010-09-19 18:20  LT  阅读(334)  评论(0编辑  收藏  举报

导航

直角体Web动力