Список свечей с функцией нажатия ItemRenderer не работает - PullRequest
0 голосов
/ 09 февраля 2011

У меня проблема с моим ItemRenderer, который я использую для списка искры. Мой код следующий:

У меня есть этот список:

<s:List 
    id="productSetList" 
    dataProvider="{ model.productSets }" 
    change="model.selectSet( productSetList )" 
    height="100%" width="100%"
    borderVisible="false" 
    itemRenderer="SideBarItemRenderer" top="20" left="15">
</s:List>

и мой itemRenderer:

<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/halo" 
    width="160" height="175" autoDrawBackground="false" buttonMode="true" useHandCursor="true"
    click="click(event)" cacheAsBitmap="true"
    >


    <fx:Script>
        <![CDATA[
            import com.png.vm.model.vos.ProductSet;

            protected function click(event:MouseEvent):void
            {
                trace('arthur');
            }

        ]]>
    </fx:Script>

    <s:BitmapImage source="{ProductSet(data).image}" width="160" height="175"/>

</s:ItemRenderer>

Дело в том, что если я прокручиваю список и нажимаю на элемент, он не отслеживает «Артур»! Почему это так? Я должен проследить это все время, когда кто-то щелкает в списке!

EDIT: Если я удаляю change="model.selectSet( productSetList )" в списке, это работает !! но я не могу удалить это, некоторые предложения? Как я могу переключить это на другую функцию?

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Трассировка работает только при отладке / использовании отладочной версии Flash Player.Убедитесь, что вы используете это.Если вы хотите всплывающее сообщение, используйте Alert.show("message")

Для получения дополнительной информации о trace () проверьте: http://livedocs.adobe.com/flex/3/html/help.html?content=logging_08.html

И Alert.show (): http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001965.html


Если вы используете отладочный плеер.Попробуйте создать событие click из встроенного <s:Group> таким образом, что бы вы ни добавили сюда, помимо растрового изображения, все равно будет вызываться событие click.

Что-то вроде:

<s:Group width="100%" height="100%" click="click(event)" >
    <s:BitmapImage source="{ProductSet(data).image}" width="160" height="175"/>
</s:Group>

Я определеннособытия клика у меня работали внутри ItemRenderers до

0 голосов
/ 09 февраля 2011

Мои извинения, я наконец решил это.Проблема заключалась в том, что внутри функции model.selectSet я вызывал List.change;Я испортил список!Моя функция была следующей:

    public function selectSet(list:List):void {
        list.layout.verticalScrollPosition=100;
        // another stuffs

    }

Итак, я просто удалил строку: list.layout.verticalScrollPosition=100; и теперь она работает нормально.

Спасибо за помощь!

...