Hay una mejor manera de conseguir el asimiento de una referencia a un clip de película con actionscript mediante una cadena sin eval
-
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?
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];
}