flex 自定义控件、事件

本文介绍如何使用MXML创建自定义控件及事件,通过实例展示了一个登录表单组件,该组件能触发自定义事件并进行事件处理。

自定义控件、自定义事件

引子:前面主要用action script3来定义事件、在此用MXML来自定义控件、自定义事件

具体可参考源代码及其执行:

一、源代码                    

1是通过新建new/MXML conpoment 同时,在填入信息时选择继承自panel

1、LoginForm.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="348" height="200" borderColor="#3CD5E3" title="登录表单" fontSize="12" fontWeight="bold">

    <mx:Metadata>

       [Event(name="loginEvent",type="com.events.loginformEvent")]-执行过程④

 

    </mx:Metadata>

    

    <mx:Script>

       <![CDATA[

           import com.events.loginformEvent;

           

           internal function onClick(evt:MouseEvent):void{-执行过程②

              var e:loginformEvent=new loginformEvent("loginEvent");-执行过程③

              e.name=txt_name.text;

              e.password=txt_pwd.text;

              

              dispatchEvent(e);

           }

           

       ]]>

    </mx:Script>

    

    <mx:Label x="42" y="33" text="用户名:" height="22" fontSize="12" fontWeight="bold"/>

    <mx:Label x="42" y="76" text="密码:" fontSize="12" fontWeight="bold"/>

    <mx:TextInput x="110" y="33" id="txt_name"/>

    <mx:TextInput x="110" y="74" id="txt_pwd" displayAsPassword="true"/>

    <mx:Button x="110" y="114" label="登录" id="btn_login" fontSize="12" 

       fontWeight="bold" width="69" click="onClick(event)"/>-执行过程①

    

</mx:Panel>

 

2、EventMXML.xml

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*">

 

    <mx:Script>

       <![CDATA[

           

           import mx.controls.Alert;

           import com.events.loginformEvent;

           

           internal function login(evt:loginformEvent):void-执行过程⑦

 

           {

              if ((evt.name=="zhangsan") && (evt.password=="123")){

                  Alert.show("你已经成功登录!","提示");

              } 

              else

              {

                  Alert.show("输入信息有误!","提示");

              }

                         

           }

           

//下文的    loginEvent="login(event)"类似于以前例子中调用init()函数,然后触发

//     init(){

//            loginform.addEventListener("loginEven",login);

//         }

       ]]>

    </mx:Script>

    

    <ns1:LoginForm x="70.5" y="29" id="loginform" loginEvent="login(event)"> -执行过程⑥

 

    </ns1:LoginForm>

    

</mx:Application>

 

3、loginformEvent.as

package com.events

{

    import flash.events.Event;

 

    public class loginformEvent extends Event

    {

       public var name:String="";

       public var password:String="";

       

       public function loginformEvent(type:String) -执行过程⑤

 

       {

           super(type, false, false);

       }

       

    }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值