用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方法的成员,将会出错
指定给继承成员的值的数据类型必须兼容于成员的数据类型。
本文介绍如何使用MXML中的子标签来初始化ActionScript定义的组件成员,并提供了一个具体实例,展示了如何通过这种方式来设定组件的初始状态。
180

被折叠的 条评论
为什么被折叠?



