2012-07-08 64 views
0

我有一個類來控制集中位置的所有按鈕。這些按鈕在加載時被推入到一個數組中,for循環將一個MouseEvent.CLICK事件監聽器添加到數組中的所有按鈕。未定義屬性的AS3 case語句值訪問

現在我的問題來與與此事件監聽器綁定的函數。我創建了一個switch語句

function btnclick(e:MouseEvent):void 
    { 
     switch (e.currentTarget) 
     { 
      case Profile_btn_63 : 
       removearrayreference(this); 
       e.currentTarget.parent.gotoAndStop("profile"); 
       break; 

     } 
    } 

,但問題是,當我測試遊戲它規定Profile_btn_63是不確定的。這實際上是從一開始就是真的(第一幀),因爲按鈕沒有被添加到按鈕數組中,也沒有事件監聽器被放置在它上面。因此,爲了達到這一點,我需要幫助使Flash無視Profile_btn_63,直到它最終得到定義。

最後,這可能有點偏離主題,但有誰知道爲什麼_63被添加到Profile_btn的末尾時,它被推入我的按鈕數組?

回答

0

如果你打算有一個「魔術開關語句」,它能夠完成程序中的所有事情 - 這是一種可怕的想法,但這是一個不同的問題 - 那麼你應該做出基於case的決定在實例名稱上:switch(e.currentTarget.name)

雖然按鈕實例可能是nullundefined,但常量字符串從不是。

+0

這個switch語句不會做任何事情。我只是做了它,所以我可以輕鬆地添加具有特定功能的新按鈕,而不必爲每個按鈕創建一個單獨的類。但是,鑑於這個項目應該是一次學習體驗,我希望在AS3中變得更好,你能否指出我「走向更好的方向」還是走這條路? – 2012-07-09 12:04:17

+0

哦,按鈕現在可以在你的幫助下完美地工作,但是如果有更好的方法去解決這個問題,那麼請一定指點我的方向。 – 2012-07-09 12:05:06

+0

如果你的目標是真的不創建類,那麼你已經達到了你想要的。如果你想學習如何保持你的代碼清潔和可重用,你必須親吻這個想法,而不是學習*爲什麼*你應該創建類,以及應該怎麼做。試圖解釋這個會太過分。但是如果你真的想學習一些東西,首先閱讀面向對象的程序設計,然後閱讀一些基本的設計模式http://www.as3dp.com/,一旦你認爲你理解了這些,請看看Bob Martin的一些視頻http://cleancoders.com/ – weltraumpirat 2012-07-09 21:08:04