考虑以下单选按钮示例。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function getRb1():RadioButton {
trace(rb1 == null);
return rb1;
}
]]>
</mx:Script>
<mx:VBox>
<mx:RadioButtonGroup **id="rbg" selection="{getRb1()}**"/>
<mx:RadioButton id="rb1" label="Radio Button 1" />
<mx:RadioButton id="rb2" label="Radio Button 2" />
<mx:RadioButton id="rb3" label="Radio Button 3" />
</mx:VBox>
</mx:Application>
问题是我在定义RadioButtonGroup时不能引用rb1,当时rb1为null,但我可以使用selectedValue来设置初始选择。
我只是想知道这是一些特殊情况,或者通常在mxml中引用组件是不安全的。
谢谢,
答案 0 :(得分:1)
我不太确定你在问什么,但希望这会回答你的问题 - 来自Flex文档:
RadioButtonGroup.selection
包含对当前的引用 选中的RadioButton控件 组。您可以进入酒店 仅限ActionScript; 不可设置 在MXML中。将此属性设置为null 取消选择当前选中的 RadioButton控制。
一般来说,在MXML中制作组件引用是完全正常的;这就是如何经常处理效果,以及许多其他事情。例如:
<mx:Glow id="g" />
<mx:Label showEffect="{g}" />
但是在您的情况下,假设您在设置所选项目时遇到问题,可能是因为您没有在单选按钮上指定group
属性;省略将组件从各个按钮中分离出来。添加后,您可以使用包含对组件的引用的Bindable
变量绑定组的选择属性,如下所示:
<mx:Script>
<![CDATA[
[Bindable]
private var selectedRadioButton:RadioButton;
private function this_creationComplete(event:Event):void
{
selectedRadioButton = rb1;
}
private function btn_click(event:Event):void
{
selectedRadioButton = rb2;
}
]]>
</mx:Script>
<mx:VBox>
<mx:RadioButtonGroup id="rbg" selection="{selectedRadioButton}" />
<mx:RadioButton id="rb1" group="{rbg}" label="Radio Button 1" />
<mx:RadioButton id="rb2" group="{rbg}" label="Radio Button 2" />
<mx:RadioButton id="rb3" group="{rbg}" label="Radio Button 3" />
<mx:Button label="Choose a Different Button" click="btn_click(event)" />
</mx:VBox>
这有意义吗?希望它不是完全不合适的;回复并告诉我,我会尽力帮助。
答案 1 :(得分:0)
通常:仅仅因为在MXML中声明控件并不意味着它在运行时可用(它可能从AS中删除,尚未创建,未添加到阶段,因此某些属性尚不可用)。这表明在运行时访问组件并依赖于值是不安全的。