Existe uma maneira melhor para se apossar de uma referência a um clipe de filme no ActionScript usando uma seqüência sem eval

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

  •  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

?
Foi útil?

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];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top