我希望这很容易,但很多Google在断点上搜索和检查对象并没有找到答案。
我可以在MXML中定义状态:
<s:states>
<s:State name="state_1" />
<s:State name="state_2" />
</s:states>
然后我可以这样做:
<s:Label id="lblTest" text="Hello" x.state_1="20" x.state_2="100" />
在Actionscript中我可以设置属性值:
lblTest.x = 150;
问题:无论当前状态如何,如何从Actionscript为lblTest设置x.state_1和x.state_2?
答案 0 :(得分:3)
在Actionscript中工作时,没有什么比这更简单了。当您使用特定于州的属性编译mxml文件时,像这样的Actionscript代码将在其构造函数中生成:
states = [
new State ({
name: "state_1",
overrides: [
new mx.states.SetProperty().initializeFromObject({
target: "lblTest",
name: "x",
value: 20
})
]
})
,
new State ({
name: "state_2",
overrides: [
new mx.states.SetProperty().initializeFromObject({
target: "lblTest",
name: "x",
value: 100
})
]
})
];
如果您在Actionscript中创建状态,则可以执行类似的操作。如果要修改已设置的特定于状态的属性,则不是那么容易。您必须在每个州的SetProperty
数组中找到overrides
对象并替换/修改它。
实际上,状态特定属性的强大功能是能够在MXML中很好地定义它们。不要忘记您可以使用绑定来设置属性的值,以基本上获得您想要的免费内容:
<s:Label id="lblTest" text="Hello" x.state_1="{state_1_value}" x.state_2="100" />