2011-04-24 2 views
0

Bonjour J'essaie de faire cela (en as2 cela a fonctionné mais pas en as3) J'ai regardé google pendant 3 heures, mais toujours pas trouvé de solution (que pour votre aide):Dynamiques vars MovieClips dans AS3

import flash.display.MovieClip; 

var mcContainer:MovieClip = new MovieClip(); 

var mcImage0:MovieClip = new MovieClip(); 
var mcImage1:MovieClip = new MovieClip(); 
var mcImage2:MovieClip = new MovieClip(); 
var mcImage3:MovieClip = new MovieClip(); 

mcImage0.name = "Boy"; 
mcImage1.name = "Girl"; 
mcImage2.name = "Woman"; 
mcImage3.name = "Man"; 


var ArrayNamesOfMC:Array = new Array(); 

var i:int = 4; 

while(i--) { 
    ArrayNamesOfMC.push(["mcImage"+i].name); 
} 

ce travail de donsn't:

ArrayNamesOfMC.push(["mcImage"+i].name); 

Répondre

1

cela devrait faire l'affaire:

var _movieClip:MovieClip = ("mcImage" + i) as MovieClip; 
ArrayNamesOfMC.push(_movieClip.name); 
2

Ceci est la réponse simple à votre question:

var mcImage0:MovieClip = new MovieClip(); 
var mcImage1:MovieClip = new MovieClip(); 
var mcImage2:MovieClip = new MovieClip(); 
var mcImage3:MovieClip = new MovieClip(); 

mcImage0.name = "Boy"; 
mcImage1.name = "Girl"; 
mcImage2.name = "Woman"; 
mcImage3.name = "Man"; 

var ArrayNamesOfMC:Array = new Array(); 

var i:int = 3; 

while (i >= 0) 
{ 
    ArrayNamesOfMC.push(MovieClip(this["mcImage" + i]).name); 

    i--; 

}// end while 

Ce qui suit peut ne pas être pertinent dans votre cas que je ne suis pas tout à fait sûr de ce que le but de votre application est, mais ce qui est probablement une meilleure approche:

var sprites:Vector.<Sprite> = new Vector.<Sprite>(); 
var names:Vector.<String> = new <String>["Boy", "Girl", "Woman", "Man"]; 

for (var i:uint = 0; i < names.length; i++) 
{ 
    var sprite:Sprite = new Sprite(); 
    sprite.name = names[i]; 

    sprites.push(sprite); 

}// end for 

Mépris ce si n'est pas applicable dans votre cas.

1

La réponse de Taurayi est une technique intéressante que je ne connaissais pas.

Personnellement, je recommande la restructuration de votre code pour mettre tous les MovieClips dans un tableau, comme suit:

var mcImages:Array = new Array(); 
for (var i = 0; i < 4; i++) { 
    mcImages.push(new MovieClip); 
} 
mcImages[0].name = "Boy"; 
trace(mcImages[0].name); 

Soit dit en passant, votre boucle while a été construit de manière incorrecte. Vous avez besoin d'une condition entre parenthèses, puis effectuez la décrémentation à l'intérieur de la boucle. Mais avec tous vos MovieClips dans un tableau, vous pouvez utiliser cette approche beaucoup plus simple pour parcourir tous les:

Questions connexes