2009-10-11 20 views

Respuesta

9

Desea utilizar un mapa hash para hacerlo.

var map:Object = {}; 
for (var i:uint = 0; i < 50; i++) 
{ 
    map['name' +i] = new Sprite(); 
} 

De lo contrario, está confundiendo el compilador. Los nombres dinámicos para variables locales no están permitidos.

+0

Esto es lo que estaba buscando, pero no funciona en mi caso. Tendré que usar una matriz. Está muy mal documentado en livedocs, ¿tal vez conoces alguna elaboración decente? –

+0

También puede usar una matriz. O puede iterar sobre el mapa como una matriz. (para (var n: String in map) {}). Tal vez puedas explicar por qué necesitas hacer esto y podemos sugerir alternativas. – Glenn

3

Hay una forma de evitar esto, dependiendo de lo que esté haciendo. Si estos clips se agregan al escenario, puede usar el método getChildByName para acceder a ellos. Su configuración sería algo como esto:

var clips:Array = []; 

for (var i:int = 0; i < 100; i++) { 
    clips[i] = new MovieClip(); 
    clips[i].name = "clip" + i; 
    addChild(clips[i]); 
} 

trace (getChildByName("clip2")); // traces [object MovieClip] 

Esto se hace mediante la consulta de la API de pantalla, sin embargo, por lo que no se puede utilizar getChildByName en cualquier cosa que no se agrega a una lista de visualización en alguna parte.

Espero que ayude!

+0

Eso es seguro, pero el código se vuelve complicado. –

0

Aunque no se recomienda ya que las clases dinámicas son más lentas que las clases selladas, sin duda puede hacer que la clase sea dinámica y luego usar esto ["varname"] para establecer la variable. Debe especificar una clase como dinámica incluso cuando se amplía una clase dinámica como Movieclip (las subclases no heredan esto).

dynamic public class MyClass{ 
.... 
.... 
.... 
for (var i:uint = 0; i < 50; i++) 
{ 
    this['name' +i] = new Sprite(); 
} 
Cuestiones relacionadas