Foros del Web » Creando para Internet » Flash y Actionscript »

Acceso a un MC creado dinamicamente

Estas en el tema de Acceso a un MC creado dinamicamente en el foro de Flash y Actionscript en Foros del Web. Hola! En mi aplicación creo varios mc's de manera dinámica con ésta función: Código: function creaMC (name, coordx, coordy) : Void { _root.createEmptyMovieClip(name, 1); _root.eval(name)._visible ...
  #1 (permalink)  
Antiguo 16/11/2010, 18:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Acceso a un MC creado dinamicamente

Hola!
En mi aplicación creo varios mc's de manera dinámica con ésta función:

Código:
function creaMC (name, coordx, coordy) : Void
{
	_root.createEmptyMovieClip(name, 1);
	_root.eval(name)._visible = false; 
	_root.eval(name).loadMovie("imagen.jpg");
	_root.eval(name)._x = coordx;
        _root.eval(name)._y = coordy; 

}
Me falla, al acceso al mc usando eval(name). Si lo hago para un único MC, de manera singular con
Código:
_root.createEmptyMovieClip("elemento", 1);
No tengo ningún problema para acceder a los elementos de la forma
Código:
_root.elemento.loadMovie("imagen.jpg");
Pero necesito hacerlo de manera genérica, ya que crearé varios MC. ¿Alguien puede indicarme cómo?

Muchas gracias.
  #2 (permalink)  
Antiguo 17/11/2010, 04:58
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 20 años, 3 meses
Puntos: 13
Respuesta: Acceso a un MC creado dinamicamente

Hola Ferola! ¿Qué versión de Flash estas usando? Creo que eval quedó obsoleto a partir de Flash 8. Para eso, tenes que reemplazar el código que tenes por este:

Código:
function creaMC (name, coordx, coordy) : Void
{
	_root.createEmptyMovieClip(name, 1);
	_root[name]._visible = false; 
	_root[name].loadMovie("imagen.jpg");
	_root[name]._x = coordx;
        _root[name]._y = coordy; 
}
Cuidado que van corchetes en lugar de paréntesis y antes de los corchetes no va punto.

Espero te sirva.

Saludos, Lucas
  #3 (permalink)  
Antiguo 17/11/2010, 05:23
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Respuesta: Acceso a un MC creado dinamicamente

Gracias por tu respuesta, pero ésa función sólo me crea el ultimo MC que le envío. He comprobado que los datos se envían bien, visualizándolos, pero es como si lo que envía el último machacara el anterior. ¿Cómo puede ser?
Éste es mi código:
Código:
var prueba:String =  "mc1>20>40*mc40>-80>30";  //nombre MC>coordX>coordY, Paso los datos para crear 2 MC						 
var resultado:Array = prueba.split("*"); 
var index = 0;

while(index < resultado.length)
{
	var elemento:Array = resultado[index].split(">");
	crearMC(elemento[0], elemento[1], elemento[2]); //Los elementos de cada mc por separado
   	index = index + 1;
}  

function  crearMC(name:String, coordx:Number, coordy:Number): Void
{
	variables.text += "["+name+"("+coordx+","+coordy+")]"; //Visualiza perfecto, las dos veces y cada una con los datos que corresponde 
	_root.capa.createEmptyMovieClip(name, 1); //Los quiero crear dentro de un MC llamado capa que está en root. 
	_root.capa[name]._visible = false; 
	_root.capa[name]._x = coordx;
        _root.capa[name]._y = coordy; 
	_root.capa[name].loadMovie("imagen.jpg"); // Al previsualizar, sólo me crea el último que le paso (mc2, -80,30).
}
Espero alguien sepa ayudarme. Gracias!

Última edición por ferola; 17/11/2010 a las 06:13
  #4 (permalink)  
Antiguo 17/11/2010, 06:28
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 20 años, 3 meses
Puntos: 13
Respuesta: Acceso a un MC creado dinamicamente

Bueno, chequeando el código que pusiste, a mi también se me deslizó el error: Fijate que cuando creas el movieclip le estas poniendo el Depth=1, siempre te va a quedar el último que creaste. Proba de reemplazar esta línea de código:
Código:
_root.capa.createEmptyMovieClip(name, 1)
por esta otra:
Código:
_root.capa.createEmptyMovieClip(name, _root.capa.getNextHighestDepth())
¿A ver si con esto se arregla?
  #5 (permalink)  
Antiguo 17/11/2010, 06:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Respuesta: Acceso a un MC creado dinamicamente

Perfecto! Muchas gracias, Lucas!
  #6 (permalink)  
Antiguo 17/11/2010, 07:05
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 20 años, 3 meses
Puntos: 13
Respuesta: Acceso a un MC creado dinamicamente

Bárbaro! Me alegro que haya funcionado! Un abrazo!
  #7 (permalink)  
Antiguo 17/11/2010, 07:14
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Respuesta: Acceso a un MC creado dinamicamente

Ahora sólo tengo que ponerle a cada MC un campo de texto que visualice su nombre, y listo, pero supongo que ya será lo mismo.
Saludos!
  #8 (permalink)  
Antiguo 29/11/2010, 06:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 2
Respuesta: Acceso a un MC creado dinamicamente

Hola a todos, recupero éste tema porque el código que sale en los mensajes anteriores me funciona bien para crear un Mc pero yo necesito crear varios con ésa misma funcion...

Por ejemplo, en el caso de que la llame tres veces... me crea sólo bien (en la posición que le indico) el correspondiente a la última llamada.

No sé si tiene que ver con la profundidad que se indica en la llamada _root.capa.createEmptyMovieClip(name, _root.capa.getNextHighestDepth()) , alguien sabe por que puede ser? Todos los mc han de crearse en la misma capa.


Muchas gracias.

Etiquetas: dinamicamente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:09.