2010-05-25 33 views
0

我試過了一切。數組是非常簡單的,所以我不知道爲什麼這不起作用:陣列將無法使用actionscript 3

var menuList:Array = [menu_bag_mc,menu_chips_mc,menu_coke_mc,menu_cup_mc,menu_deodorant_mc,menu_fork_mc,menu_knife_mc,menu_lighter_mc,menu_milk_mc,menu_pill_mc,menu_rings_mc,menu_shampoo_mc,menu_spoon_mc,menu_straw_mc,menu_toothbrush_mc,menu_trashbag_mc,menu_water_mc]; 

function captureAllClicks(event:MouseEvent):void 
{ 
    trace(menuList.indexOf(event.target)); 
} 

stage.addEventListener(MouseEvent.CLICK, captureAllClicks); 

每當我點擊任何舞臺上的項目(全部給上面列出的實例名稱的每一個補間包含一個按鈕的movieclip)我得到-1的痕跡。爲什麼?!

EDIT2

需要做些什麼:

for each (var mc:MovieClip in menuList) mc.addEventListener(MouseEvent.CLICK, createContent); 


//right here, i need to make a variable that I can put in the "addchild" so that 
//for every one of the list items clicked, it adds a movieclip child with 
//the same name (such as menu_bag_mc from above) with "_frame" appended. 
var framevar:MovieClip = menuList[i] += "_frame"; 

function createContent(event:MouseEvent):void { 
    if(MovieClip(root).currentFrame == 850) { 
    while(MovieClip(root).numChildren > 1) 
    { 
     MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1)); 
    } 
MovieClip(root).addChild (framevar); 
MovieClip(root).addChild (closeBtn); 
} 
else { 
MovieClip(root).addChild (framevar); 
MovieClip(root).addChild (closeBtn); 
MovieClip(root).gotoAndPlay(806); 
} 
} 

如果我不能做一個變量,有沒有點整「爲每個」你們放在一起聲明...不是真的任何指向一個數組,因爲我仍然需要爲每個單獨的代碼創建20行代碼。如果你不能從數組中創建變量,有一個數組有什麼意義?

回答

1

因爲很明顯event.target似乎不在menuList

最可能的解釋是,您的MovieClip有孩子,被點擊,因此是event.target

您應該在所有這些MovieClip s上設置mouseChildrenfalse。或者你也可以按登記個別影片剪輯處理,因爲這:你爲什麼不嘗試的event.currentTarget代替event.target

也幫助自己排查

function captureAllClicks(event:MouseEvent):void { 
    trace(menuList.indexOf(event.currentTarget)); 
} 
for each (var mc:MovieClip in menuList) mc.addEventListener(MouseEvent.CLICK, captureAllClicks); 

格爾茨
back2dos

+0

這很好。你能解釋一下mouseChildren嗎? 我將在這些列表項目中的每一個上運行一個函數,那麼您認爲這樣做會更好嗎? – steve 2010-05-25 14:50:02

+0

我編輯了上面的代碼,顯示了我已經對所有項目執行此功能的新代碼,並且我得到了正確的參數。你列出的「每個」都更好嗎?此外,有沒有辦法獲得每個列表項的實際名稱?所以我可以用它作爲新函數中的變量... – steve 2010-05-25 14:57:34

+0

詳細說明...說函數中的參數是addChild(menu_bag_mc_frame);'有沒有辦法(如menuList [i])來訪問一個變量並追加「_frame」?那麼在每個函數上,它會從庫中加載一個新項目? – steve 2010-05-25 15:00:34

0

,爲什麼不您只需跟蹤event.target並跟蹤event.currentTarget。您也可以遍歷數組並跟蹤其中的所有對象。然後更好地瞭解發生了什麼。

+0

'event.currentTarget'在這種情況下總是會成爲'stage',這是沒用的。 – back2dos 2010-05-25 14:51:56

+0

@ back2dos我總是得到e.target和e.currentTarget困惑。 – 2010-06-07 20:19:47