从上面可以看出在方法login()中发送(dispatch)了LoginEvent, 来看看LoginEvent代码:
- <STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #9900cc"><STRONG><FONT color=#9900cc size=2><P align=left>package</P></FONT></STRONG></SPAN><P align=left> </P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">import</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> com.ny.flex.mate.vo.User;<P align=left> </P><FONT size=2><P align=left> </P></FONT></SPAN><P></P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">import</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> flash.events.Event;<P align=left> </P><FONT size=2><P align=left> </P></FONT></SPAN><P></P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">public</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #9900cc">class</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> LoginEvent </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">extends</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> Event<P align=left>{</P><FONT size=2><P align=left> </P></FONT></SPAN><P></P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">public</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">static</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">const</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> LOGIN:String = </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #990000">"login"</SPAN></STRONG><SPAN style="FONT-SIZE: x-small">;<FONT size=2><P align=left> </P></FONT></SPAN><P></P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">public</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #6699cc">var</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> loginUser:User;<FONT size=2><P align=left> </P></FONT></SPAN><P></P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">public</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> </SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #339966">function</SPAN></STRONG><SPAN style="FONT-SIZE: x-small"> LoginEvent(type:String, <SPAN style="COLOR: #ff6600"><STRONG><EM><SPAN style="TEXT-DECORATION: underline">bubbles:Boolean=</SPAN></EM></STRONG></SPAN></SPAN><SPAN style="FONT-SIZE: x-small"><SPAN style="COLOR: #ff6600"><STRONG><EM><SPAN style="TEXT-DECORATION: underline">true</SPAN></EM></STRONG></SPAN></SPAN><SPAN style="FONT-SIZE: x-small">, cancelable:Boolean=</SPAN><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">false</SPAN></STRONG><SPAN style="FONT-SIZE: x-small">)<P align=left>{</P><FONT size=2><P align=left> </P></FONT></SPAN><P></P><P align=left><STRONG><SPAN style="FONT-SIZE: x-small; COLOR: #0033ff">super</SPAN></STRONG><SPAN style="FONT-SIZE: x-small">(type, bubbles, cancelable);<P align=left>}</P><P align=left> </P><P align=left>}</P><P>}</P></SPAN><P></P></STRONG><SPAN style="FONT-SIZE: x-small"> com.ny.flex.mate.event<P align=left>{</P><FONT size=2><P align=left> </P></FONT></SPAN>
package
import com.ny.flex.mate.vo.User;
import flash.events.Event;
public class LoginEvent extends Event{
public static const LOGIN:String = "login";
public var loginUser:User;
public function LoginEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false){
super(type, bubbles, cancelable);}
}
}
com.ny.flex.mate.event{
在代码中“bubbles”属性必须为“true”,以使得上层的组件(EventMap)可以处理它。
Mate的魔法完全存在于EventMap中,LoginEvent可以被标签所处理:
<