2012-04-19 36 views
0

我試圖創建一個循環,它會通過影片剪輯名稱允許您附加圖像。AS3:通過影片剪輯名稱循環

這是到目前爲止我的代碼:

private var mc:MovieClip; 
private var instance:String; 

public function showFriends(e:Event) 
{ 
    var str:String = e.target.data; 
    var num:uint; 
    var i:Number; 
    var rex:RegExp = /[\s\r\n]*/gim; 
    var friends_array:Array = []; 

    num = friends_array.length; 
    friends_array = str.split(','); 

     for(i=0; i<num; i++){ 
      var fri_id = friends_array[i].replace(rex,''); 

      mc = "P"+i; // THIS IS THE PROBLEM LINE 

      instance = 'DP';// Sets the Instance Name 
      load_DP(fri_id); 
     } 
} 

我試圖找出如何從循環(VAR我)增加數到MovieClip的名字。

目前這個代碼不起作用放出了一個錯誤:

Implicit coercion of a value of type String to an unrelated type flash.display:MovieClip.

我已經摸索出意味着它使用一個字符串名稱爲MC和爲此不工作。

如果我改變它太:

mc = P1; // with no quotes 

這工作,但顯然只使用一個MC。

如果你能幫助請讓我知道。

謝謝。

Eli

回答

1

如果您嘗試訪問的所有MovieClip實例都是當前組件的子項,則可以使用以下表示法。

mc = this["P" + i]; 

如果他們有一些其他組件的所有孩子,你還可以訪問他們的...

mc = myComponent["P" + i]; 
+0

謝謝你使用'mc = this [「P」+ i];'工作完美。 – 2012-04-19 18:47:47

1

查看DisplayObjectContainer的getChildByName方法。如果showFriends是在你的文檔類,那麼它應該工作作爲\

mc = this.getChildByName("P" + i); 

這應該工作 - * *但是 - 這是相對緩慢的,而不是好的做法。將這些動畫片段動態添加到舞臺上(在代碼中,而不是拖到舞臺上)會更好,因此您已經有了對它們的引用。

+0

除非你的顯示列表上調用這個上有幾千項,它會很快。我也認爲,比起其他答案所建議的,將兒童作爲直接的財產參考也是更好的做法。 +1 – meddlingwithfire 2012-04-19 18:34:16