我有一个列表作为数据提供者的arraylist。它有一个内联项呈示器,它有图像控件。 click事件不适用于图像ctrl。代码如下所示
<s:ArrayList id="allActionsArrList">
<fx:Object click="showList('Portlet')" source="@Embed('images/bpc1.jpg')" />
<fx:Object click="showList('Pages')" source="@Embed('images/Tab.png')" />
<fx:Object click="smsClick()" source="@Embed('images/launchpad_tel.png')" />
<fx:Object click="logoutImg_clickHandler(event)" source="@Embed('images/logoutS.swf')" />
</s:ArrayList>
<s:List id="actionStripList" bottom="0" width="100%" borderColor="black"
borderVisible="true" contentBackgroundAlpha="0" dataProvider="{allActionsArrList}"
useVirtualLayout="false">
<s:layout>
<s:TileLayout/>
</s:layout>
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer width="100%" height="40">
<mx:Image buttonMode="true" horizontalCenter="0"
width="40" height="40" source="{data.source}" click="{data.click}"/>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
任何想法。提前谢谢!
答案 0 :(得分:0)
1.你可能会这样做:
<fx:Object clickHandler="{showList}" clickParams="{['Portlet']}" source="@Embed('images/bpc1.jpg')" />
<fx:Object clickHandler="{showList}" clickParams="{['Pages']}" source="@Embed('images/Tab.png')" />
<fx:Object clickHandler="{smsClick}" clickParams="{[]}" source="@Embed('images/launchpad_tel.png')" />
<fx:Object clickHandler="{logoutImg_clickHandler}" clickParams="{[]}" source="@Embed('images/logoutS.swf')"/>
<mx:Image buttonMode="true" horizontalCenter="0" width="40" height="40" source="{data.source}" click="data.clickHandler.apply(this, data.clickParams)"/>
在这里你可能应该照顾this
对象(info)
但是我使用了第二种变体。
2.另一种变体是为您的Object项定义一些属性(例如id
)。然后,您可以在内联itemRenderer中使用switch
语句,并根据data.id
调用不同的侦听器。