zoukankan      html  css  js  c++  java
  • [转载]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);
  • 相关阅读:
    .Proto 文件转换成.cs文件
    C# 委托和事件
    C# 对word (03、07)的相关操作
    程序中记录日志的封装类
    压缩文件程.ZIP
    xml和对象直接的序列化和反序列化
    C#判断两个日期是否在同一周,某日期是本月的第几周
    vs2008 C# 单元测试
    解压缩.zip文件
    记录一次曲折的维护-重构过程
  • 原文地址:https://www.cnblogs.com/niuniu502/p/1831241.html
Copyright © 2011-2022 走看看