2011-10-16 96 views
0

我爲我的清單做了一個contextMenu。然後我有這樣的代碼功能:如何獲得被點擊的listitem?

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

}); 

我怎樣才能知道哪個listItem被點擊?

我希望「e.mouseTarget」是一個項目,但它是一個列表的CellRenderer。

回答

0

編輯:

的'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」,我猜這是一個錯字......不管怎樣,我錯了,那麼'e.mouseTarget'不是上下文菜單中的項目,而是你正確的顯示元素-clicked。在你的代碼中,'lmi5'是什麼?您應該爲contextMenu的每個項添加不同的'ContextMenuEvent.MENU_ITEM_SELECT'事件偵聽器,而不是上下文菜單本身。我現在用工作代碼更新我的答案。 – danii

+0

哎呀,這是一個錯字。我明白你的建議,但這種方法並不完全安全,我將不得不寫很多附加代碼(因爲當我按下某個項目上的右鍵時,它沒有被選中,它只是當我把光標放在它上面時) 。我仍然希望通過這種方式獲得contextmenu的座標點擊並將其轉換爲它下面的項目。 – Alena

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

這會給你的數據包含在cellRenderer中

+0

1119:通過具有靜態類型的引用訪問可能未定義的屬性數據flash.display:InteractiveObject。 – Alena