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

StackOverflow https://stackoverflow.com/questions/123979

  •  02-07-2019
  •  | 
  •  

Question

J'ai créé un groupe de clips qui portent tous le même nom. Après un autre événement, j'ai créé une chaîne de caractères telle que:

var clipName = "barLeft42"

qui se tient dans un autre clip appelé "chose".

J'ai pu obtenir une référence à l'aide de:

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

Mais ça fait mal - y a-t-il un meilleur moyen?

Était-ce utile?

La solution

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

_root.thing[ "barLeft42" ]

Cela devrait faire l'affaire pour vous ...

Autres conseils

La meilleure façon d'éviter l'utilisation de eval , qui est obsolète, consiste à indexer entre crochets:

var movieClip = _root.thing[ "barLeft42" ]

Mais le meilleur moyen est de conserver des références aux clips que vous avez créés et d'y accéder par référence plutôt que par 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 ];

Vous pouvez utiliser des crochets et inclure des variables entre ceux-ci ... donc si vous voulez les parcourir en boucle, vous pouvez le faire:

for (var i=0; i<99; i++) {
  var clipName = _root.thing["barLeft"+i];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top