我有两个组成部分。一个叫做“InsideComp”,一个叫做“OutsideComp”。 OutsideComp将InsideComp作为其组件的一部分,在我的主MXML文件中,我嵌入了一个OutsideComp实例。如何在主MXML文件中访问InsideComp的公共变量?
在Actionscript中,我可以做类似的事情: OutsideComp.InsideComp.valToChange = 5;
但我不知道如何在MXML中执行此操作。我知道这可能是一个简单的问题。
答案 0 :(得分:4)
通过设置MXML组件的 id 属性,您可以有效地使其成为可通过点符号访问的公共属性。 “通过MXML访问它”是一个棘手的问题。您可以在xml标记中使用绑定表示法并将该属性绑定到另一个属性,或者您可以以正常的AS3方式在脚本块中访问它。
答案 1 :(得分:2)
我在这里更新代码以包含对外部类的引用。我不是100%肯定这是你正在寻找的,但我会尽我所能给你一个
在OuterClass:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*">
<local:InnerClass id="inner" width="100%" height="100%" />
</mx:VBox>
将InnerClass:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:CheckBox id="innerCheckbox" selected="true" />
</mx:VBox>
编辑:这是应用程序的更新版本
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal" xmlns:local="*">
<mx:Binding source="{outer.inner.innerCheckbox.selected.toString()}"
destination="checkLabel.text" />
<mx:Label id="checkLabel" />
<local:OuterClass id="outer" width="100%" height="100%" />
</mx:Application>
以下是对此的简要说明:
有3个MXML文件:
主应用程序中有一个绑定,它接受复选框值(通过对象层次结构)并适当地设置Label的文本字段。这就像ActionScript一样:用。运算符来访问嵌套对象。
当复选框更新时,Label的值会相应更新。
希望这会让事情变得更加清晰。
答案 2 :(得分:0)
我认为最直接的方法是使用脚本标记。这将允许您运行您熟悉的AS。首先,您需要为要编辑的每个属性分配ID。
<mx:Script>
private function onCreationComplete (event:Event):void {
idOfTheOutsideComp.idOfTheInsideComp.propertyName = newValue;
}
</mx:Script>
我把这段代码放在一个创建完整处理程序中,因为你不能简单地从Script标签中运行代码,它需要在一个函数中运行。