Flex4自定义登录监听事件精简做法

参考了:http://hi.baidu.com/chongshe/item/cb0976b7cde4c17e254b09bc之后,发现把登录框独立成Group组件之后,无法触发事件.下面贴下我的全部代码:

1.LoginEvent.as

package {
	import flash.events.Event;
	
	public class LoginEvent extends Event {
		public static const USER_LOGIN : String = "userLogin";
		private var resMsg : String;
		
		public function LoginEvent(type:String, resMsg:String, bubbles:Boolean=false, cancelable:Boolean=false) {
			super(type, bubbles, cancelable);
			this.resMsg = resMsg;
		}
		public function getResMsg() : String {
			return resMsg;
		}
		override public function clone() : Event {    
			return new LoginEvent(type, resMsg);
		}
	}
}

 2.Login.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			protected function btnLogin_clickHandler(event:MouseEvent) : void {
				if (true) { // 这里可以检验登录 : tiUserName.text='用户名' && tiPassWord="密码"
					var evt:LoginEvent=new LoginEvent(LoginEvent.USER_LOGIN, "登录成功");
					parentApplication.dispatchEvent(evt);
				}
			}
		]]>
	</fx:Script>
	<s:Panel title="用户入口">
		<s:Form>
			<s:FormItem label="用户名:" width="100%">
				<s:TextInput id="tiUserName" />
			</s:FormItem>
			<s:FormItem label="密码:" width="100%">
				<s:TextInput id="tiPassWord" />
			</s:FormItem>
			<s:FormItem width="100%">
				<s:layout>
					<s:HorizontalLayout horizontalAlign="center"/>
				</s:layout>
				<s:Button id="btnLogin" width="70" height="25" label="按钮" click="btnLogin_clickHandler(event)"
						  horizontalCenter="0" verticalCenter="0"/>
			</s:FormItem>
		</s:Form>
	</s:Panel>
</s:Group>

 3.MainApp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   minWidth="955" minHeight="600"
			   xmlns:view="*"
			   creationComplete="app_creationCompleteHandler()">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.FlexEvent;
			
			protected function app_creationCompleteHandler():void {
				this.addEventListener(LoginEvent.USER_LOGIN, userLoginHandler);
			}
			
			private function userLoginHandler(e:LoginEvent):void{
				trace(e.getResMsg());
				Alert.show(e.getResMsg(),"提示");
			}
		]]>
	</fx:Script>
	<view:Login verticalCenter="0" horizontalCenter="0" />
</s:Application>

 

你可能感兴趣的:(flex4)