Flex自定义事件和组件的使用方法
2011-06-11 01:47
344 查看
在Flex中使用自定义事件和组件可以使代码变得简洁清晰,需要注意的两点是在自定义事件中要重写clone方法,返回自定义事件对象;在自定义组件中要在Metadata中,声明组件事件的名字和类型。
自定义事件LoginEvent.as的代码如下:
package events
{
import flash.events.Event;
public class LoginEvent extends Event
{
public var username:String;
public var password:String;
public static const LOGIN:String = "login";
public function LoginEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event
{
var newEvent:LoginEvent = new LoginEvent(type);
newEvent.username = username;
newEvent.password = password;
return newEvent;
}
}
}
自定义组件MyComponent.mxml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="#9DEDE8"
creationComplete="myInit()"
>
<fx:Metadata>
[Event(name="sizeSelected",type="flash.events.TextEvent")]
[Event(name="login",type="events.LoginEvent")]
</fx:Metadata>
<fx:Declarations>
<s:RadioButtonGroup id="sizeGroup" itemClick="clickHandler(event)"/>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import events.LoginEvent;
import mx.events.ItemClickEvent;
[Bindable]
public var firstName:String;
[Bindable]
public var lastName:String;
private function myInit():void{
userNameInput.text="123abc";
userNameInput.selectRange(0,userNameInput.text.length);
userNameInput.setFocus();
}
public function getFullName():String{
return firstName+lastName;
}
private function clickHandler(event:Event):void{
var e:TextEvent = new TextEvent("sizeSelected");
e.text=sizeGroup.selection.value as String;
dispatchEvent(e);
}
private function doLogin():void{
var e:LoginEvent = new LoginEvent(LoginEvent.LOGIN);
e.username = userNameInput.text;
e.password = passwordInput.text;
dispatchEvent(e);
}
]]>
</fx:Script>
<s:Label text="{firstName}" />
<s:Label text="{lastName}" />
<s:Label text="{getFullName()}" id="label1"/>
<s:RadioButton groupName="sizeGroup" label="Small" value="Small"/>
<s:RadioButton groupName="sizeGroup" label="Medium" value="Medium"/>
<s:RadioButton groupName="sizeGroup" label="Large" value="Large"/>
<s:TextInput id="userNameInput" restrict="0-9"/>
<s:TextInput id="passwordInput"/>
<s:Button id="loginBtn" label="Log in" click="doLogin()" />
</mx:VBox>
在主文件中使用如下:
protected function mycomponent1_sizeSelectedHandler(event:TextEvent):void
{
sizeMessage.text="You selected the"+event.text;
}
protected function mycomponent1_loginHandler(event:LoginEvent):void
{
sizeMessage.text = event.username + event.password;
}
<components:MyComponent firstName="name1" lastName="name2" x="362" y="240" sizeSelected="mycomponent1_sizeSelectedHandler(event)" login="mycomponent1_loginHandler(event)"/>
自定义事件LoginEvent.as的代码如下:
package events
{
import flash.events.Event;
public class LoginEvent extends Event
{
public var username:String;
public var password:String;
public static const LOGIN:String = "login";
public function LoginEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event
{
var newEvent:LoginEvent = new LoginEvent(type);
newEvent.username = username;
newEvent.password = password;
return newEvent;
}
}
}
自定义组件MyComponent.mxml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="#9DEDE8"
creationComplete="myInit()"
>
<fx:Metadata>
[Event(name="sizeSelected",type="flash.events.TextEvent")]
[Event(name="login",type="events.LoginEvent")]
</fx:Metadata>
<fx:Declarations>
<s:RadioButtonGroup id="sizeGroup" itemClick="clickHandler(event)"/>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import events.LoginEvent;
import mx.events.ItemClickEvent;
[Bindable]
public var firstName:String;
[Bindable]
public var lastName:String;
private function myInit():void{
userNameInput.text="123abc";
userNameInput.selectRange(0,userNameInput.text.length);
userNameInput.setFocus();
}
public function getFullName():String{
return firstName+lastName;
}
private function clickHandler(event:Event):void{
var e:TextEvent = new TextEvent("sizeSelected");
e.text=sizeGroup.selection.value as String;
dispatchEvent(e);
}
private function doLogin():void{
var e:LoginEvent = new LoginEvent(LoginEvent.LOGIN);
e.username = userNameInput.text;
e.password = passwordInput.text;
dispatchEvent(e);
}
]]>
</fx:Script>
<s:Label text="{firstName}" />
<s:Label text="{lastName}" />
<s:Label text="{getFullName()}" id="label1"/>
<s:RadioButton groupName="sizeGroup" label="Small" value="Small"/>
<s:RadioButton groupName="sizeGroup" label="Medium" value="Medium"/>
<s:RadioButton groupName="sizeGroup" label="Large" value="Large"/>
<s:TextInput id="userNameInput" restrict="0-9"/>
<s:TextInput id="passwordInput"/>
<s:Button id="loginBtn" label="Log in" click="doLogin()" />
</mx:VBox>
在主文件中使用如下:
protected function mycomponent1_sizeSelectedHandler(event:TextEvent):void
{
sizeMessage.text="You selected the"+event.text;
}
protected function mycomponent1_loginHandler(event:LoginEvent):void
{
sizeMessage.text = event.username + event.password;
}
<components:MyComponent firstName="name1" lastName="name2" x="362" y="240" sizeSelected="mycomponent1_sizeSelectedHandler(event)" login="mycomponent1_loginHandler(event)"/>
相关文章推荐
- Flex自定义事件和组件的使用方法
- 在Flex中使用StyleMaager类和setStyle()方法给Alert组件设置样式
- 在Flex中使用StyleMaager类和setStyle()方法给Alert组件设置样式
- AspJpeg组件使用方法大全
- Flex 4 组件visable与includeInLayout的绑定使用
- Android使用addView动态添加组件的方法
- react-native组件中NavigatorIOS和ListView结合使用的方法
- Flex 图表组件使用示例
- Flex 3快速入门: 构建自定义组件 使用代码分离构建自定义组件
- C#事件-自定义事件的使用方法
- 使用store来优化React组件的方法
- Android使用原生组件WebView加载网页和数据的方法
- vue子组件使用自定义事件向父组件传递数据
- 使用ExternalInterface调用Flex方法-传参数、有返回值!
- 组件上传之AspUpload使用方法
- Android 两种为自定义组件添加属性的使用方法和区别
- C#中TreeView组件使用方法初步
- 日志组件logback的介绍及配置使用方法(一)
- flex中对于位图的九宫格 scale9Grid使用方法
- DELPHI控件:DBLookupComboBOX组件的使用方法