我很擅长flex,特别是对于mxml部分。对我来说有些令人困惑的事情 例如,我有自定义组件文件Abc.mxml,代码为:
<s:Group>
//Lots of code
<s:Button id="someId" /*code*/ />
</s:Group>
然后我有Xyz.mxml,它也是自定义组件文件。
<s:Group>
<fx:Scrip>
//something happens here, for example some other button click or whatever
</fx:Script>
//code
<comp:Abc />
</s:Group>
所以问题是如何访问该按钮的属性。我想在Xyz文件中发生某些事情时,按钮的(someId)可见性变为false。如果Abc.mxml是AS类文件那么它会很简单,只需要制作对象等,但是如果它是mxml文件怎么办,我不知道。
答案 0 :(得分:1)
mxml与as之间没有太大区别。当你写Xyz.mxml:
<s:Group>
<fx:Scrip>
//something happens here, for example some other button click or whatever
</fx:Script>
//code
<comp:Abc />
</s:Group>
...您只需指定派生自Group的类Xyz。 Mxml - 只是标记语言,使构建界面更容易。在编译期间,mxml文件被转换为纯AS,因此没有(大规模)你可以在mxml中做,你不能在AS中,反之亦然。
mxml中的ID属性类似于AS中的实例名称,即它将在您的calss中转换为公共属性。
回答您的问题。
您可以在Abc中编写公共函数并在Xyz中调用它。
Abc.mxml:
<s:Group>
<fx:Script>
<![CDATA[
public function doSomething():void
{
someId.enabled = false;
}
]]>
</fx:Script>
<s:Button id="someId"/>
</s:Group>
Xyz.mxml:
<s:Group>
<fx:Script>
<![CDATA[
private function somethingHappened():void
{
abcComponent.doSomething();
}
]]>
</fx:Script>
//code
<comp:Abc id="abcComponent"/>
</s:Group>
在somethingHappened
函数中,您可以直接访问Button abcComponent.someId
,但我强烈建议不要这样做,因为它会破坏封装并使您的类更具凝聚力(等等)。