Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как выбирать элементы списка s:List правой кнопкой мыши (http://www.flasher.ru/forum/showthread.php?t=130855)

AntonAL 07.10.2009 09:37

Как выбирать элементы списка s:List правой кнопкой мыши
 
Доброго дня!

Необходимо решить следующую задачу:
Есть список (s:List) фотографий. По нажатию правой кнопки мыши, для нажатой фотографии должно появляться контекстное меню, причём, момент нажатия должен считаться не по отпусканию кнопки, а, именно, по нажатию.

Реализация появления контекстного меню - не проблема.
1. Я могу непосредственно в item renderer'е создать обработчик события rightClick
2. В обработчике дать этому событию всплыть
3. И где-нибудь его поймать

Проблема именно в нажатии правой кнопкой мыши - правая кнопка не предназначена для выбора элемента в списке, поэтому, получается так, что появление контекстного меню отрабатывает не для данного right-кликнутого элемента, а для того элемента, который был выбран до этого (левой кнопкой).

Есть какие нибудь идеи ?

Gubber 07.10.2009 10:22

Код AS3:

 
private function onMouseOver(ev:MouseEvent):void{
        createMenu();
        if (!origanalSet){
(1)                  prevMenu = AdvancedDataGrid(treeDataItem.owner).contextMenu;
                    origanalSet = true;
        }
(2)          AdvancedDataGrid(treeDataItem.owner).contextMenu = treeNodeMenu;
        removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
        addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}

Я работаю с AdvancedDataGrid, но думаю с листом можно в рендерере реализовать примерно такой же механизм.
При наведении мышки на компонент - генериться меню, затем это меню заменяет то контекстное меню, которое было у родительского компонента (AdvancedDataGrid). После чего удаляется слушатель MOUSE_OVER и добавляется слушатель MOUSE_OUT,

Код AS3:

 
private function onMouseOut(ev:MouseEvent):void{
    AdvancedDataGrid(treeDataItem.owner).contextMenu = prevMenu;
    addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
    removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}



Часовой пояс GMT +4, время: 13:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.