例如在Flex 4中
?xml version =“1.0”?>
的xmlns:MX = “库://ns.adobe.com/flex/mx”
的xmlns:S = “库://ns.adobe.com/flex/spark” >
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
private function setLabel():void {
trace ("the id is "+myButton.id);
myButton.id = "yourButton";
}
]]>
</fx:Script>
<s:Button id="myButton" label="Click Me" click="setLabel();"/>
单击按钮两次时的轨迹 'id是myButton',然后是 'id is yourButton'
不仅仅是空闲查询。我希望在用它们填充主应用程序时更改自定义组件的ID
答案 0 :(得分:0)
我认为在mxml中设置的id的id是变量名,它也设置了内部id(myButton.id =“myButton”)因此你可以将myButton.id更改为“yourButton”,因为id和变量名是不同的属性。
虽然我承认,但很奇怪。
如果您想在填充主应用程序时创建自定义组件,我会采用不同的方法,而不是将它们全部放在mxml中。也许在actionscript中创建组件并将它们设置为mxml最好? (例如,您的主要类是mxml应用程序,然后您有一个后面的类,可以完成创建视图的繁重工作,以及所有自定义命名组件)
答案 1 :(得分:0)
请记住,mxmlc会将MXML解析为ActionScript。 mxmlc使用mxml标记的ID属性在编译时映射到公共类成员。更改ID字段的运行时值将不会更改类结构。
示例:
<MyComponent>
<Button id="myButton" />
</MyComponent>
编译时,mxmlc将其粗略转换为:
package {
class MyComponent {
[Bindable]
public var myButton:Button;
// Other junk for class init, etc would show here...
}
}
然后编译为SWF字节代码。此时,ID属性只是一个属性,与类的功能无关。您必须实际将新的Button实例分配给this.myButton
以使其更改。