Hay una mejor manera de conseguir el asimiento de una referencia a un clip de película con actionscript mediante una cadena sin eval

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

  •  02-07-2019
  •  | 
  •  

Pregunta

He creado un montón de clips de película que todos tienen nombres similares y, a continuación, después de algunos otros eventos que se han construido una cadena como:

var clipName = "barLeft42"

que se celebra dentro de otro clip de película llamado 'cosa'.

He sido capaz de hacerse con una referencia mediante:

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

Pero que se siente mal - hay una manera mejor?

¿Fue útil?

Solución

Los clips de película son las colecciones en actionscript (como la mayoría de los y similar a javascript, todo es básicamente pares clave-valor).Puedes índice dentro de la colección mediante corchetes y una cadena para el nombre de la clave como:

_root.thing[ "barLeft42" ]

Que debe hacer el truco para ti...

Otros consejos

La mejor manera, lo que evita el uso de la obsoleta eval, es el índice entre corchetes:

var movieClip = _root.thing[ "barLeft42" ]

Pero la mejor manera es mantener las referencias a los clips que hacer, y acceder a los mismos por referencia, en lugar de por nombre:

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 ];

Usted puede utilizar los soportes y la inclusión de variables dentro de ellos...así que si usted quería bucle a través de todos ellos se puede hacer esto:

for (var i=0; i<99; i++) {
  var clipName = _root.thing["barLeft"+i];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top