flash As3事件传递参数几种方法

方案一:

 代码如下 复制代码

// 要传递的参数
var value:int = 100;
// 触发事件的按钮
var btn:Btn = new Btn;
btn.addEventListener(MouseEvent.CLICK,clickHandler(value));

// 返回事件处理的函数
function clickHandler(v:int):Funciton
{
   return function (e:MouseEvent):void{
                  //处理传入的参数 V
                    doSomeThing(v);
               }
}

方案二-代理类:

 代码如下 复制代码

/**
*@author:Amyflash
* @example:
* import com.JEventDelegate
  stage.addEventListener(MouseEvent.MOUSE_OVER,JEventDelegate.create(yourHandler,"t1","t2"));
  function yourHandler(e:MouseEvent,...arg) {
  trace(e)
  trace(arg)
  }
*/

package {
public class JEventDelegate {
public function JEventDelegate() {
}
public static function create(f:Function,...arg):Function {
var F:Boolean=false;
var _f:Function=function(e:*,..._arg){
   _arg=arg
if(!F){
F=true
_arg.unshift(e)
}
f.apply(null,_arg)
  };
return _f;
}
public static function toString():String {
return "Class JEventDelegate";
}
}
}

来看一下怎么用这个MyEvent类,修改上一节中的文件;MyClass:

 代码如下 复制代码

package net.smilecn{

  

    import flash.display.Sprite;

    import flash.events.MouseEvent;

    import net.smilecn.MyEvent;

 

    public class MyClass extends Sprite{

     

        public function MyClass(){

            addEventListener(MouseEvent.CLICK,clickHnadler);

        }

     

        private function clickHnadler(event:MouseEvent):void{

            dispatchEvent(new MyEvent("myClassMessage",{a:100,b:200}));

        }

    }

 

}

我们发现修改代码并不多,由new Event变成了net MyEvent,也就是说以前发的消息是as自带的Event事件,现在发的是我们自己写的MyEvent事件,再看参数还有一个{a:100,b:200},这个参数就是我们传进去的对象,这个对象有两个属性值,一个叫a,值为100,一个叫b,值为200;

再来看文档类:

 代码如下 复制代码

package net.smilecn{

 

    import flash.display.Sprite;

    import net.smilecn.MyEvent;

    import net.smilecn.MyClass;

 

    public class MainForm extends Sprite{

     

        private var myClass:MyClass;

     

        public function MainForm(){

            myClass = new MyClass();

            addChild(myClass);

            myClass.addEventListener("myClassMessage",myClassMessageHandler);

             

        }

     

        private function myClassMessageHandler(event:MyEvent):void{

            trace("你收到了myClass的消息:a="+event.param.a+" b="+event.param.b);

        }

    }

}

文档类中修改的地方是侦听到消息后执行的方法,我们发现参数的类型变成了MyEvent,因为我们发的是MyEvent的事件,这里收到事件的类型当然是MyEvent,在event.param就是去取MYEevent_object,就是我们在MyClass传过的对象了源码天空,event.param.a的值就是100,event.param.b的值就是200,这样我们就达到了传递参数的目的了。

时间: 2024-10-02 19:04:41

flash As3事件传递参数几种方法的相关文章

ASP.NET页面间数据传递的9种方法

本文我们将讨论的是ASP.NET页面间数据传递的几种方法,对此希望能帮助大家正确的理解ASP.NET页面间数据传递的用处以及便利性. 0.引言 Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确.安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种

js提交form表单,并传递参数的实现方法_javascript技巧

//增加的函数 begin function queryFun(){ var type = $("#artType").val(); var hasInputed = "1";//表示输入了要搜索 的信息 if($("#query").val()=="选手姓名/编号"){ //表示没有输入要搜索的值 hasInputed="0"; } document.getElementById("queryF

jquery取消事件冒泡的三种方法(推荐)_jquery

1.通过返回false来取消默认的行为并阻止事件起泡. jQuery 代码: $("form").bind( "submit", function() { return false; } ); 2.通过使用 preventDefault() 方法只取消默认的行为. jQuery 代码: $("form").bind( "submit", function(event){ event.preventDefault(); } );

使用JavaScript获取URL中的参数(两种方法)_javascript技巧

本文给大家分享两种方法使用js获取url中的参数,其中方法二是使用的正则表达式方法,大家可以根据需要选择比较好的方法,废话不多说了,直接看详细介绍吧. 方法一: //取url参数 var type = request("type") function request() { var query = location.search; var paras = arguments[0]; if (arguments.length == 2) { query = arguments[1]; }

[AS3]Flash与后台数据交换四种方法整理【转】

随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法. 1.URLLoader(URLStream) 2.FlashRemoting 3.XMLSocket(Socket)  4.FMS/FCS 一.URLLoader(URLStream)篇 URLStream和URLLoader中URLLoaderDataFormat.BINARY类似,它提供对下载 URL 的低级访问方式,我在此不再重复了,有兴趣的,可以看Flash帮助中URLStr

关于javaScript注册click事件传递参数的不成功问题_javascript技巧

最近这半年作为一个java 程序员,我写的javaScript代码都快比java代码多了,前段时间是给某银行做一个柜员管控系统,在柜员授权这一块功能上,由于柜员的授权需要考虑各方面的因素,比如机构权限.柜员类型权限.岗位权限,业务权限等等,并且要对这些权限要做多次的交集或者并集处理,页面上不得不用许多的javascript来进行控制.造成了这一功能模块的实现上javaScript代码比java代码负责的情况. 而现在又要给某银行开发一个保管箱管理系统,其核心功能块保管箱座管理以及保管箱管理,为实

Jsp页面URL中传递参数乱码的方法

  Jsp页面在URL中传递参数会出现乱码 解决方法如下: 一.使用更改Tomcat的方法.这个方法简单,但是需要改动的地方是服务器软件级别的,如果稍微变动系统将无法正确转码,移植性不高. 1.来到tomcat目录,找到conf目录下的server.xml问价,打开,找到标签,在最后添加URIEncoding='GBK',效果如下: view plaincopy to clipboardprint? port="8080"maxThreads="150"minSpa

php页面传递参数值几种方法总结

php是一种服务器的脚本语言,他也是现在最为流行的WEB开发语言,下面我们来讲述一下几种上在php开发应用中常用的四种页面之间传递参数的几种方法. 第一种: 使用客户端浏览器的cookie.cookie很容易理解,就是一个临时文件,可以把它看成一个储藏室,浏览器在浏览的过程中记录一些信息,就暂时存放在 这里. 在page01中设置一个cookie. <?php        setcookie("VisitTimes",$VisitTimes,time()+31536000);

ASP.NET页面间数据传递的几种方法介绍_实用技巧

Web页面是无状态的,服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确.安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合. 一.ASP.NET页面间数据传递的各种方法和分析 1.使用Querystring 方法 QueryString 也叫查询字