用MXML里的tag属性来初始化继承成员

本文介绍如何使用MXML中的子标签来初始化ActionScript定义的组件成员,并提供了一个具体实例,展示了如何通过这种方式来设定组件的初始状态。

用MXML里的tag属性来初始化继承成员

在一个MXML组件里,你能初始化任何继承的public,可写的成员变量的值,通过定义一个MXML组件的子标签,其id匹配这个继承成员的名。例如,
你已经有了这么一个用AS定制的MyPanel组件:
package myComponents
{
    import mx.containers.Panel;
    import mx.controls.Text;
    import mx.controls.TextInput;

    public class MyPanel extends Panel {

        // Define public variables for two child components.   
        public var myInput:TextInput;
        public var myOutput:TextInput;

        public function MyPanel() {
            super();
        }

        // Copy the text from one child component to another.   
        public function xfer():void {
            myOutput.text = myInput.text;
        }
    }
}
然后,你基于这个MyPanel.as创建一个MXML定制组件:
<?xml version="1.0"?>
<!-- myPanelComponent.mxml -->
<MyComps:MyPanel xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:MyComps="myComponents.*">

      <mx:TextInput id="myInput"/>
      <mx:TextInput id="myOutput"/>

</MyComps:MyPanel>

注意到上面代码中,两个TextInput控件的id属性正好匹配于父组件的成员,因此,Flex将会用TextInput控件来初始化该继承成员。这种初始化成员的技术可被称为后编码。
下面是在Flex应用里使用:
<?xml version="1.0"?>
<!-- as/MainCodeBehindExample.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:MyComps="myComponents.*">

   <MyComps:MyPanelComponent id="myP"/>

   <mx:Button label="Copy" click="myP.xfer();"/>

</mx:Application>

注:如果MXML子标签中的id属性不匹配继承成员,Flex将会用id为组件创建一个新的成员。
要支持从MXML中初始化,一个继承成员必须有如下特性:
成员必须是public
成员必须是可写的,如果你初始化一个常量,或一个只有getter方法而没有对应setter方法的成员,将会出错
指定给继承成员的值的数据类型必须兼容于成员的数据类型。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值