[AS3]使用dispatchEvent事件的同时传参数的问题
我们先写一个继承Event的自定义类:
- package {
- import flash.events.Event;
- public class MyEvent extends Event{
- private var _object:Object;
- public function MyEvent(type:String,object:Object):void{
- super(type);
- _object=object;
- }
- public function get param():Object {
- return _object;
- }
- }
- }
下面是一个GET方法,通过param这个名字去取_object这个对像的值。
再来看一下怎么用这个MyEvent类,修改上一节中的文件;MyClass:
- package {
- 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 {
- 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,这样我们就达到了传递参数的目的了。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例