在我们以往发出事件的时候,经常无法添加自己额外的属性,现在写了这个事件类可以提供大家使用.
类名:超级事件 superEvent
说明:发送事件时,可以自己任意发送更多自定义的参数。
构造函数:(type:String,obj:Object=null,bubbles:Boolean=false,cancelable:Boolean=false)
继承至:flash.events.Event
方法:
public function get content():Object
public function set content(obj:Object):void
作者:yi【奥博瑞德】
网站:
要获取事件传递过来的自定义信息,使用e.content就可以了。
先看效果,这是一个简单登录的界面,登录的三个信息用户名、密码和是否记住是通过事件发布到事件流中,被侦听器侦听到,然后发给相应的函数,在文本框里显示出来。为啥要这样做呢,直接写文本框的值给函数不就可以了么,其实这样做有另外一个道理就是降低文件的耦合度,使之能够尽量重用,同时也是为了做这个例子:
例子:main.as
//************************************
// ActionScript file
package {
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Stage;
import flash.events.*;
import flash.text.TextField
import com.ourbrander.Event.superEvent;
public class main extends MovieClip {
import fl.controls.RadioButtonGroup;
import fl.controls.RadioButton;
import flash.events.MouseEvent;
private var rem:RadioButtonGroup;
public function main() {
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e=null) {
rem=new RadioButtonGroup("rem");
rem1.group =rem;
rem1.value=true;
rem2.group = rem;
rem2.value=false
addEventListener("zhuce",check);
sumbit_btn.addEventListener(MouseEvent.CLICK,getLoginInfo);
}//end function
private function getLoginInfo(e:MouseEvent):void {
var userName:String=u_txt.text;
var passWord:String=p_txt.text;
var autoLogin:Boolean=rem.selection.value;
//写法1,先生成一个超级事件再定义其属性:
var login:superEvent=new superEvent("zhuce",null,true);//"zhuce"这里是用户可以自己按照自己的情况设置的事件常数
login.content={_userName:userName,_passWord:passWord,_autoLogin:autoLogin};
//写法2,超级事件的时候就定义其属性
//var login:superEvent=new superEvent("zhuce",{_userName:userName,_passWord:passWord,_autoLogin:autoLogin},true);
e.target.dispatchEvent(login);//发布至事件流
}//end function
private function check(e):void {
trace(e.target)
var str:String=""
for (var i in e._content) {
str+=[i]+"="+e._content[i]+"\n";
}
_txt.text=str
trace(str);
}//end function
}//end class
}//end package
//************************************
package com.ourbrander.Event{
/*
类名:超级事件 superEvent
说明:发送事件时,可以自己任意发送更多自定义的参数。
构造函数:(type:String,obj:Object=null,bubbles:Boolean=false,cancelable:Boolean=false)
继承至:flash.events.Event
方法:
public function get content():Object
public function set content(obj:Object):void
作者:yi【奥博瑞德】
网站:/#
*/
//类的源文件==================================
import flash.events.Event;
public class superEvent extends Event {
import flash.events.Event;
public var _content:Object;
public function superEvent(type:String,obj:Object=null,bubbles:Boolean=false,cancelable:Boolean=false) {
super(type,bubbles,cancelable);
content=obj;
}
public function set content(obj:Object):void {
_content=obj;
}
public function get content():Object {
return _content;
}
override public function clone():Event {
return new superEvent(type,content,bubbles,cancelable);
}
override public function toString():String {
return formatToString("superEvent","type","content","bubbles","cancelable","eventPhase");
}
}
}
//---------------------