在 flex3 中,List 有 isItemSelected() 方法,但是我在 flex4 中没有找到。我的场景是判断当前ItemRenderer是否被选中,然后根据选中的值,对ItemRenderer中的特定组件做一些逻辑(假设ItemRenderer有Image组件和Label组件,我只想对ItemRenderer做一些逻辑图片)
问问题
778 次
1 回答
2
在 Flex 4 中,项目渲染器功能可以更好地利用状态。这意味着它们具有默认状态,我们可以使用它们来实现特定于状态的逻辑:
normal
hovered
selected
up
如果您想在项目被选中时做某事,您可以为该stateChangedComplete
事件添加一个侦听器,并在该处理程序中实现您的逻辑(当然,您必须测试当前状态是否为“已选择”)。代码可能如下所示:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
stateChangeComplete="stateChangedHandler()"
autoDrawBackground="false">
<fx:Script>
<![CDATA[
protected function stateChangedHandler():void
{
if(currentState == "selected")
{
// implement your logic here
}
}
]]>
</fx:Script>
<!-- Your original MXML code here -->
</s:ItemRenderer>
如果您需要完成一些重要的逻辑,这将是要走的路。但是,如果您只需要更改图像上的某些属性,当项目渲染器被选中时,您可以只在元素上指定一个特定于状态的属性/值对,就像这样(假设图像默认褪色,当项目被选中时,为了解释起见,您希望将它们淡入):
<s:Image alpha="0.5" alpha.selected="1" />
这样,不需要侦听器/处理程序。
希望这可以帮助。祝你有美好的一天。
于 2012-08-09T08:28:58.497 回答