flex自定义无参数事件

自定义事件必须注意几点:

(1)自定义事件通过继承Event类来实现。

(2)自定义事件不可以自己触发,只能有系统事件派发。

了解这两点后现在就可以开始自定义自己的事件了。

首先我们新建一个ActionScript Class,这个Class继承flash.events.Event。

package
{
	import flash.events.Event;
	
	public class MyEvent extends Event
	{
		public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
		{
			super(type, bubbles, cancelable);
		}
		
		override public function clone():Event
		{
			// TODO Auto Generated method stub
			return new MyEvent(type,bubbles,cancelable);
		}
		
	}
}

下面创建一个登录的组件(component),并添加和使用自定义事件

 

<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   width="400" height="260" fontSize="22" fontWeight="bold" textAlign="center"
			   title="用户登录"
			   >
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<fx:Metadata>
		[Event(name="myevent", type="MyEvent")]
	</fx:Metadata>
	
	<s:Form id="loginForm">
		<s:FormItem label="用户名:">
			<s:TextInput id="username" textAlign="left"/>
		</s:FormItem>
		<s:FormItem label="密   码:">
			<s:TextInput id="passwd" textAlign="left" displayAsPassword="true"/>
		</s:FormItem>
	</s:Form>
	<s:Button id="registerBtn" x="56" y="160" label="重置"/>
	<s:Button id="loginBtn" x="274" y="160" label="登录" click="clickHandle(event)"/>
	
	<fx:Script>
		<![CDATA[
			private function clickHandle(event:MouseEvent):void {
				this.dispatchEvent(new MyEvent("myevent",true,false));
			}
		]]>
	</fx:Script>
</s:TitleWindow>

在主程序中引入刚才新建的component,并触发该

<?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:myLogin = "*"
			   >
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<myLogin:MyLogin id="myLogin" x="278" y="114" myevent="clickedHandle(event)">
		
	</myLogin:MyLogin>
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private function clickedHandle(event:MyEvent):void {
				Alert.show("The type of this event is "+event.type+"\nThe currentTarget is "+event.currentTarget+  
					"\nThe target is "+event.target);  
			}
		]]>
	</fx:Script>
</s:Application>

效果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值