AS3 Как определить последовательность событий - PullRequest
0 голосов
/ 01 декабря 2011

Я использую flex-4-tree (https://github.com/wasbridge/flex-4-tree) в приложении AIR для мобильного телефона.

Класс дерева:

public class Tree extends List
{
    ...
    dataSource.addEventListener(TreeEvent.NODE_EXPANDED, nodeExpandedHandler);
    dataSource.addEventListener(TreeEvent.NODE_COLLAPSED, nodeCollapsedHandler);
    ...
}

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

В настоящее время Событие изменения списка получено до событий Развернуть / Свернуть дерево Flex-4.

Мне нужно получить События Развернуть / Свернуть дерево гибкого 4 до события Изменение списка.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 01 декабря 2011

Установите таймер в вашем обработчике для ListChangeEvent, который откладывает любое действие на одну десятую секунды. Затем, если вы расширяете / сжимаете событие до того, как закончится таймер, вы можете отменить действие для события изменения. Примерно так:

private var _expandEventOccurred:Boolean = false;

private function handleListChange(evt:Event):void {

    var timer:Timer = new Timer(100,1);  //100ms = 0.1s
    timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleListChangeTimerEvent);
    timer.start();

}

private function handleExpandContract(evt:Event):void {

    _expandEventOccured = true;

    //perform whatever other actions you need for the expand/contract event

}

private function handleListChangeTimerEvent(evt:Event):void {

    if(_expandEventOccured) {
        _expandEventOccured = false;
        return;
    }

    _expandEventOccured = false;  //needed here as well

    //perform whatever other actions you need for the list change event 

}

Не самая чистая вещь в мире, но она должна сработать. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...