Обнаружение щелчка мышью по элементам spark.components.List, но игнорирование клавиш со стрелками - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть пользовательский компонент, содержащий список, отображающий элементы из коллекции XMLListCollection:

        [Bindable]
        private var _games:XMLListCollection = new XMLListCollection();

...

        <s:List itemRenderer="Game" dataProvider="{_games}"
          change="gameClicked(event)">
            <s:layout>
                <s:TileLayout />
            </s:layout>
        </s:List>

где данные XML могут выглядеть следующим образом:

              <game id="0"/>
              <game id="9012">
                <user id="VK48058967" />
                <user id="MR14315189992643135976" />
                <user id="OK10218913103" />
              </game>
              <game id="9013">
                <user id="OK151358069597" />
                <user id="OK515549948434" />
              </game>

и снимок экрана, подобный этому (представляющий объединяемые игры с участием до 3 игроков):

enter image description here

Моя проблема в том, что прослушиватель change -Event запускается не только при щелчке мышью по элементу, но и при нажатии клавиш со стрелками на клавиатуре:

        private function gameClicked(event:IndexChangeEvent):void {
            var game:XML = event.currentTarget.selectedItem as XML;
            if (game == null)
                return;
            Alert.show("Clicked game: " + game.@id);
            dispatchEvent(new PrefEvent(PrefEvent.GAME_CLICKED, game.@id));
        }

Также, если я щелкну дважды, только один щелчок мыши приведет к отправке моего пользовательского события (поскольку очевидно, что между элементами нет изменения ).

Кто-нибудь знает, пожалуйста, как заставить мой Список реагировать только на щелчки мышью?

UPDATE:

Да, я пытался использовать событие "изменить" для списка ранее, но затем у меня есть проблема, что он запускается, даже если нажата полоса прокрутки списка.

1 Ответ

1 голос
/ 08 сентября 2011

Эмм, yourList.addEventListener(MouseEvent.CLICK, onClick)? Или вы можете просто использовать встроенное событие в MXML. Это прослушивает все клики в списке.

Возможно, вы захотите, чтобы пользовательский рендерер элементов имел свой собственный обработчик кликов и отправлял пользовательское событие, которое всплывает, где вы можете его прослушать, в списке отображения, чтобы оно могло быть более конкретным.

...