2013-05-02 21 views
0

嘿想知道是否有人可以幫助我,我想添加一個移動剪輯的負載,並使他們可以點擊到舞臺上的行動腳本3,我可以找出它們的間距後來我就不斷收到錯誤,同時試圖以此來增加他們:添加影片剪輯與for循環動作腳本3

for(var x:int = 1; x <= 10; x++) 
     { 

      var this["cardPrint"+x] :MovieClip = new this["card_"+x](); 
      this.addChild(this["cardPrint"+x]); 
      this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]); 

     } 

在正確的方向的一個點,將有助於很多 謝謝

+0

您的「cardPrint」movieclip是否已存在於庫文件中 - 您是否在嘗試創建該實例? – whodeee 2013-05-02 19:01:00

+0

我正嘗試創建「cardPrint」的實例 – user2344403 2013-05-02 19:07:13

回答

0

this是指示當前類範圍指示符。所以this["cardPrint"+x]實際上是試圖找到一個具有該名稱的變量,但是你不能聲明一個已經是引用的變量。

做你想做什麼的唯一方式是這樣的:

public dynamic class Foobar 
{ 
    public function Foobar() 
    { 
     for(var x:int = 1; x <= 10; x++) 
     { 
      this["cardPrint"+x] = new this["card_"+x](); 
      this.addChild(this["cardPrint"+x]); 
      this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]); 
     } 
    } 
} 

的關鍵是類dynamic。這允許您在運行時創建變量名稱並使用scope["varName"]語法以字符串形式創建它們。如果您是在Flash Pro的時間線上完成此操作,那麼您可以按照您的意願完成這項任務。您最好在循環中創建對象並將它們存儲在數組中以便以這種方式訪問​​它們,而不是使用上述語法。

創建的每個對象的數據類型將與實例化的對象相同,因此您將無法將其設置爲MovieClip或類似。

"card_"+x也需要是一個可實例化的對象(一個Class)。如果不是的話,你不能實例化它,它總會出錯。

我確實想告誡你,這是一個很糟糕的方式把它放在一起。錯誤的空間非常大,使用這種語法很難做到,並且難以在代碼中讀取。

+0

謝謝我將回到繪圖板並重新開始,我剛剛開始使用as3,再次感謝您 – user2344403 2013-05-02 19:12:09

+0

沒問題。我強烈建議嘗試將每個對象存儲在一個數組中(或者甚至是一個通用的「Object」),而不是這樣做。通常,使用'this [「varName」]'語法用於檢索,而不是設置。顯然也有例外,但你所要做的一般最好是通過數組/矢量來處理。 – 2013-05-02 20:46:17

+0

再次感謝你,這就是我目前正試圖做的,我剛剛開始,非常感謝你 – user2344403 2013-05-02 21:51:48