2012-04-19 8 views
0

イメージを添付できるムービークリップ名になるループを作成しようとしています。ここでAS3:Loop MovieClip Names

は、これまでの私のコードです:

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 i)をから番号を追加することができますどのように動作するようにしようとしています。

現在、このコードは、エラーをオフに与えては動作しません:私は働いている

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

は、それがMCとして文字列名を使用してその動作していないことを意味します。これは動作しますが、明らかに一つだけのMCを使用しています

mc = P1; // with no quotes 

:私はあまりにもそれを変更した場合

私に教えていただけたら助かります。

ありがとうございます。

Eli

答えて

1

アクセスしようとしているすべてのMovieClipインスタンスが現在のコンポーネントの子である場合は、次の表記法を使用できます。

mc = this["P" + i]; 

彼らはいくつかの他のコンポーネントのすべての子である場合は、表示リスト上でこれを呼び出している場合を除き、あなたはまた、

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

'mc = this [" P "+ i];'ありがとうございました。 –

1

DisplayObjectContainerのgetChildByNameメソッドを確認してください。 showFriendsがあなたのDocumentクラス内にある場合、それは、\

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

として動作するはずこれは動作するはずです - *ただし* - これは良い練習が比較的遅く、ではありません。ステージにドラッグする代わりに、これらのMovieClipをステージに動的に(コード内で)追加することをお勧めします。

+0

...とそれらにアクセスすることができ、その上に数千個のアイテムを持っています、それは十分に速くなるでしょう。私はまた、他の答えが示唆したように、まっすぐな財産参照として子どもを呼び出すよりも優れた習慣であると主張したいと思います。 +1 – meddlingwithfire

関連する問題