2011-06-30 16 views
1

我是編程新手,如果我誤用了術語,請事先道歉。變量是否可以傳入函數名?

在'for循環'我想添加一個事件監聽器到一系列按鈕。對於每個按鈕,我想定義一個不同的功能。當函數被命名時是否可以傳遞變量?

我的按鈕都有順序命名的實例名稱。

這裏是我的代碼:

for (var cBut:int = 1; cBut < 4; cBut++) 
{ 
this["c" + cBut].addEventListener(MouseEvent.CLICK, ["orangeValue" + cBut]); 
} 

而產生的錯誤: 類型錯誤:錯誤#1034:類型強制失敗:無法轉換[] @ 42f50a89工作。

在此先感謝您的幫助。

+0

將[「orangeValue」+ cBut]更改爲此[「orangeValue」+ cBut] –

回答

2

即說:「一個事件偵聽器添加到this["c" + cBut]。監聽MouseEvent.CLICK,而當這種情況發生火災的功能new Array("orangeValue" + cBut)。數組不能處理功能,而該數組中僅元素將是一個字符串。

你想要的是this["orangeValue" + cBut].<whatever function handles click>(都需要的功能是什麼聽的AS3事件這與AS2不同。)你最好的選擇實際上是使用一個輔助功能太 - 它保證沒有範圍的問題:。

for (var cBut:int = 1; cBut < 4; cBut++) 
{ 
    helper(cBut); 
} 
function helper(cBut:int):void 
    this["c" + cBut].addEventListener(MouseEvent.CLICK, 
            this["orangeValue" + cBut].clickHandler); 
} 
相關問題