2011-10-16 2 views
0

Я сделал contextMenu для своего списка. Тогда у меня есть функция, как это для кода:Как получить список, который был нажат?

lmi5.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent){ 

}); 

Как я могу узнать, какие ListItem была нажата?

Я надеялся, что «e.mouseTarget» будет элементом, но его CellRenderer списка.

ответ

0

EDIT:

'e.mouseTarget' не выбранный пункт в контекстном меню, но элемент дисплея, на котором вы щелкнули правой кнопкой. Я думаю, вам нужно добавить одну другую функцию слушателя событий для каждого пункта в контекстном меню, таким образом, вы можете сказать, какая из них была нажата, например:

var myContextMenu:ContextMenu new ContextMenu(); 
var item:ContextMenuItem = new ContextMenuItem("item 1"); 
var item2:ContextMenuItem = new ContextMenuItem("item 2"); 

myContextMenu.customItems.push(item); 
myContextMenu.customItems.push(item2); 

item1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, item1_select_handler); 
item2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, item2_select_handler); 

function item1_select_handler(e:ContextMenuEvent):void 
{ 
    trace("item 1!!"); 
} 

function item2_select_handler(e:ContextMenuEvent):void 
{ 
    trace("item 2!!"); 
} 
+0

nope, как я уже сказал, его cellrenderer из списка. – Alena

+0

О, вы написали «e.mouseMenu», я предполагаю, что это была опечатка ... В любом случае, я был не прав, «the.mouseTarget» - это не элемент в контекстном меню, а элемент отображения, на котором вы правы -clicked. Что такое 'lmi5' в вашем коде? Вы должны добавить к каждому элементу contextMenu различный прослушиватель событий'ContextMenuEvent.MENU_ITEM_SELECT ', а не контекстное меню. Я сейчас обновляю свой ответ с помощью рабочего кода. – danii

+0

Упс, это была опечатка. Я понимаю, что вы предлагаете, но этот метод не является полностью безопасным, и мне придется писать много кода добавления (поскольку, когда я нажимаю правую кнопку на каком-то элементе, его не выбрано, это было только тогда, когда у меня был курсор над ним) , Я все еще надеюсь, что это способ получить координаты контекстного меню и преобразовать его в элемент под ним. – Alena

0
var l:Object=(e.mouseTarget).data 

Это даст вам данные, содержащихся в cellRenderer

+0

1119: Доступ к возможно неопределенным данным свойств через ссылку со статическим типом flash.display: InteractiveObject. – Alena

Смежные вопросы