Apache flex Flex Spark单选按钮取消选择事件?
有没有办法听一听?我可以很容易地收听选择单选按钮的点击,但我似乎找不到一种方法来收听取消选择单选按钮的情况 有什么想法吗Apache flex Flex Spark单选按钮取消选择事件?,apache-flex,events,radio-button,Apache Flex,Events,Radio Button,有没有办法听一听?我可以很容易地收听选择单选按钮的点击,但我似乎找不到一种方法来收听取消选择单选按钮的情况 有什么想法吗 谢谢 在Flex 2天中,取消选择单选按钮时会触发“更改”事件。然而,由于某种原因,这种小小的便利在Flex3中消失了,我不相信我们提供了任何类型的替换事件 在RadioButtonGroup级别处理事件是很好的,但有时确实需要在单选按钮级别处理事件——特别是如果希望通过绘制单选按钮的itemRenderer与数据提供程序条目交互 方便的是,我有一点样板代码,可以作为Radi
谢谢 在Flex 2天中,取消选择单选按钮时会触发“更改”事件。然而,由于某种原因,这种小小的便利在Flex3中消失了,我不相信我们提供了任何类型的替换事件 在RadioButtonGroup级别处理事件是很好的,但有时确实需要在单选按钮级别处理事件——特别是如果希望通过绘制单选按钮的itemRenderer与数据提供程序条目交互 方便的是,我有一点样板代码,可以作为RadioButton和RadioButtonGroup的插入式替换,它们在单选按钮级别提供“取消选择”事件。这是SmartRadioButton,首先:
<?xml version="1.0" encoding="utf-8"?>
<s:RadioButton xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import events.SmartRadioButtonEvent;
public function notifyDeselect():void {
dispatchEvent(new SmartRadioButtonEvent('deselect'));
}
]]>
</fx:Script>
<fx:Metadata>
[Event(name="deselect", type="events.SmartRadioButtonEvent")]
</fx:Metadata>
</s:RadioButton>
[事件(name=“取消选择”,type=“events.SmartRadioButtonEvent”)]
以下是SmartRadioButtonGroup:
<?xml version="1.0" encoding="utf-8"?>
<s:RadioButtonGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
change="selectionChanged();"
>
<fx:Script>
<![CDATA[
import spark.components.RadioButton;
import components.SmartRadioButton;
protected var oldSelection:SmartRadioButton = null;
// Notify our old selection that it has been deselected, and update
// the reference to the new selection.
public function selectionChanged():void {
var newSelection:SmartRadioButton = this.selection as SmartRadioButton;
if (oldSelection == newSelection) return;
if (oldSelection != null) {
oldSelection.notifyDeselect();
}
oldSelection = newSelection;
}
// Override some properties to make sure that we update oldSelection correctly,
// in the event of a programmatic selection change.
override public function set selectedValue(value:Object):void {
super.selectedValue = value;
oldSelection = super.selection as SmartRadioButton;
}
override public function set selection(value:RadioButton):void {
super.selection = value;
oldSelection = super.selection as SmartRadioButton;
}
]]>
</fx:Script>
</s:RadioButtonGroup>
其中包含两个属性重写,以确保在对组的选择进行编程更改时正确更新oldSelection
SmartRadioButtonEvent不是什么新奇或重要的东西。它可能只是一个普通事件,因为没有特殊的负载
我已经测试了上述代码,它们都能正常工作,但如果在更大的系统中使用,肯定会有边缘条件和其他需要解决的奇怪问题。我可能会尝试监听RadioButtonGroup的itemClick或Change事件:我同意,您也可能会对单个单选按钮执行此操作。只需检查事件处理程序中是否选中或取消选中它。你可能会也可能不会得到假阳性和假阴性。如果他们只是单击文本或其他内容,而没有实际更改值,我很想这仍然会触发单击事件,因此请小心。我可以在RadioButton上使用FlexEvent.UPDATE_COMPLETE,然后检查所选的值。