У меня есть пользовательский компонент, содержащий список, отображающий элементы из коллекции 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 игроков):
Моя проблема в том, что прослушиватель 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));
}
Кроме того, если я щелкну дважды, только 1 щелчок мыши вызовет отправку моего пользовательского события (поскольку, очевидно, между элементами нет change).
Кто-нибудь знает, как заставить мой список реагировать только на щелчки мыши?
ОБНОВЛЕНИЕ:
Да, я пытался использовать событие «изменить» для списка раньше, но потом у меня возникла проблема, что оно срабатывает, даже если щелкнуть полосу прокрутки списка.