·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]使用dispatchEvent事件的同时传参数的问题

时间:2012-09-12 14:28dawdler.name
[AS3]使用dispatchEvent事件的同时传参数的问题.下面是一个GET方法,通过param这个名字去取_object这个对像的值。再来看一下怎么用这个MyEvent类,修改上一节中的文件;MyClass

我们先写一个继承Event的自定义类:

  1. package {   
  2. import flash.events.Event;   
  3. public class MyEvent extends Event{   
  4. private var _object:Object;   
  5. public function MyEvent(type:String,object:Object):void{   
  6. super(type);   
  7. _object=object;   
  8. }   
  9. public function get param():Object {   
  10. return _object;   
  11. }   
  12. }   
  13. }   

下面是一个GET方法,通过param这个名字去取_object这个对像的值。

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

  1. package {   
  2. import flash.display.Sprite;   
  3. import flash.events.MouseEvent;   
  4. import net.smilecn.MyEvent;   
  5. public class MyClass extends Sprite{   
  6. public function MyClass(){   
  7. addEventListener(MouseEvent.CLICK,clickHnadler);   
  8. }   
  9. private function clickHnadler(event:MouseEvent):void{   
  10. dispatchEvent(new MyEvent("myClassMessage",{a:100,b:200}));   
  11. }   
  12. }   
  13. }  

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

再来看文档类:

  1. package {   
  2. import flash.display.Sprite;   
  3. import net.smilecn.MyEvent;   
  4. import net.smilecn.MyClass;   
  5. public class MainForm extends Sprite{   
  6. private var myClass:MyClass;   
  7. public function MainForm(){   
  8. myClass = new MyClass();   
  9. addChild(myClass);   
  10. myClass.addEventListener("myClassMessage",myClassMessageHandler);   
  11. }   
  12. private function myClassMessageHandler(event:MyEvent):void{   
  13. trace("你收到了myClass的消息:a="+event.param.a+" b="+event.param.b);   
  14. }   
  15. }   
  16. }  

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

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器