Existe uma maneira melhor para se apossar de uma referência a um clipe de filme no ActionScript usando uma seqüência sem eval
-
02-07-2019 - |
Pergunta
Eu criei um monte de clipes de filme que todos têm nomes semelhantes e, em seguida, depois de algum outro evento que se acumularam uma string como:
var clipName = "barLeft42"
que é realizada dentro de outro clipe de filme chamado 'coisa'.
Eu tenho sido capaz de se apossar de uma referência usando:
var movieClip = Eval( "_root.thing." + clipName )
Mas isso se sente mal - há uma maneira melhor
?Solução
Os clipes de filme são coleções em ActionScript (como a maioria e semelhante ao javascript, tudo é basicamente pares chave-valor). Você pode indexar na coleção usando colchetes e uma string para o nome da chave como:
_root.thing[ "barLeft42" ]
Isso deve fazer o truque para você ...
Outras dicas
A forma melhor, o que evita usar a eval
preterido, é índice com colchetes:
var movieClip = _root.thing[ "barLeft42" ]
Mas a melhor maneira é manter referências aos clipes que você faz, e acessá-los por referência, ao invés de pelo nome:
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 ];
Você pode usar colchetes e incluir variáveis ??dentro deles ... por isso, se você queria fazer um loop através deles tudo o que você pode fazer isso:
for (var i=0; i<99; i++) {
var clipName = _root.thing["barLeft"+i];
}