Y at-il un meilleur moyen d'obtenir une référence à un clip dans ActionScript en utilisant une chaîne sans eval


1

J'ai créé un tas de clips qui ont tous des noms similaires, puis après un autre événement, j'ai construit une chaîne comme:

qui est détenue dans un autre clip appelé «chose».

Je suis en mesure de mettre la main sur une référence à l'aide:

var movieClip = Eval("_root.thing." + clipName) 

Mais qui se sent mal - est-il une meilleure façon?

4

Les clips vidéo sont des collections dans actionscript (comme la plupart et similaire à javascript, tout est essentiellement des paires clé-valeur). Vous pouvez indexer dans la collection en utilisant des crochets et une chaîne pour le nom de la clé comme:

_root.thing[ "barLeft42" ] 

Cela devrait faire l'affaire pour vous ...


0

La meilleure façon, ce qui évite d'utiliser l'eval dépréciée, est à l'index avec des crochets:

var movieClip = _root.thing[ "barLeft42" ] 

Mais la meilleure façon est de garder les références aux clips que vous faites, et d'y accéder par référence, plutôt que par son nom:

var movieClipArray = new Array(); 
for (var i=0; i<45; i++) { 
    var mc = _root.thing.createEmptyMovieClip("barLeft"+i, i); 
    // ... 
    movieClipArray.push(mc); 
} 

// ... 

var movieClip = movieClipArray[ 42 ]; 

0

Vous pouvez utiliser des crochets et inclure des variables en leur sein ... donc si vous vous pouvez le faire voulu faire une boucle par tous:

for (var i=0; i<99; i++) { 
    var clipName = _root.thing["barLeft"+i]; 
}