Событие щелчка не работает flex

#apache-flex #flex3 #flex4

#apache-гибкий #flex3 #flex4

Вопрос:

У меня есть список, который является arraylist в качестве поставщика данных.В нем есть встроенное средство визуализации элементов, которое управляет изображением. Событие щелчка не работает для изображения 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>
  

Есть идеи.Заранее спасибо!

Ответ №1:

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 объекте (информация)
Но я бы использовал 2-й вариант.

2. Другой вариант — определить некоторый атрибут ( id например) для ваших элементов объекта. Затем вы можете использовать switch инструкцию в вашем встроенном ItemRenderer и вызывать разные прослушиватели в зависимости от data.id .

Комментарии:

1. Что вы подразумеваете под компонентом изображения, я уже использовал там элемент управления изображением. спасибо за ответ

2. @Naveen ужасно извиняюсь, я такой невнимательный… Я обновил свой ответ

3. Эй, да, я тоже сделал то же самое, что вы упомянули во 2-м варианте, это сработало. Большое спасибо вам