PDA

Просмотр полной версии : Как выбирать элементы списка s:List правой кнопкой мыши


AntonAL
07.10.2009, 09:37
Доброго дня!

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

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

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

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

Gubber
07.10.2009, 10:22
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,


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