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

Referenciar a un movieClip creado dinamicamente

Estas en el tema de Referenciar a un movieClip creado dinamicamente en el foro de Flash y Actionscript en Foros del Web. Hola a [email protected] me estreno en este foro con esta pregunta. A ver cómo me explico: Tengo un movieClip ("texto0_mc") que contiene un texto dinámico ...
  #1 (permalink)  
Antiguo 10/01/2007, 02:25
 
Fecha de Ingreso: enero-2007
Mensajes: 13
Antigüedad: 10 años, 11 meses
Puntos: 0
Referenciar a un movieClip creado dinamicamente

Hola a [email protected] me estreno en este foro con esta pregunta.
A ver cómo me explico:

Tengo un movieClip ("texto0_mc") que contiene un texto dinámico dentro ("texto_txt").

Cada vez que aprieto un botón quiero duplicar "texto0_mc" a "texto1_mc", "texto2_mc", etc...

Y necesito que al ponerle un evento onPress al movieClip resultante tenga una variable de tipo String asociada a él...

Es decir, cuando apriete en el movieClip creado la variable "mc_seleccionado" sea igual a (por ejemplo) "segundo", o "tercero", o cualquier String relacionado con el propio movieClip que presionamos.

en fin, voy a poner el código que supongo se entenderá mejor:

Código:
var id:Number = new Number(0);
var mc_seleccionado:String=new String();
function anadir_nodo():Void{
     duplicateMovieClip("texto"+id+"_mc", "texto"+String(id+1)+"_mc", _root.getNextHighestDepth());
     id++;
     eval("texto"+id+"_mc").onPress = function() {
     mc_seleccionado=String(id);
//aqui está el quid de la cuestión, yo quiero que cada vez que presiones
//sobre "texto"+id+"_mc" la variable "mc_seleccionado" tenga la referencia al 
//id exclusivo de ESE movieClip.
     };
}
boton_btn.onRelease=function(){
anadir_nodo();
}
Espero haber explicado con claridad cuál es mi problema.

Y muchas gracias de antemano.

Amparo Ribelles.
  #2 (permalink)  
Antiguo 10/01/2007, 09:48
Avatar de fueradejuego  
Fecha de Ingreso: abril-2003
Ubicación: Málaga - España
Mensajes: 94
Antigüedad: 14 años, 7 meses
Puntos: 0
Re: Referenciar a un movieClip creado dinamicamente

La forma mas simple de hacer eso es poner la funcion onPress en el propio Clip de Pelicula que estas duplicando. Así todos los que dupliques tendrán los mismos eventos. A partir de ahí es cuestión de que le asignes las variables que vayas a usar con los Clips de Pelicula justo despues de dupliclarlos.

No se si me explico o si te servirá, asi que suerte y ya me contarás.

Un saludo.
  #3 (permalink)  
Antiguo 10/01/2007, 14:24
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 11 años, 2 meses
Puntos: 30
Re: Referenciar a un movieClip creado dinamicamente

mira vas a la barra de menu->insertar->nuevo simbolo

seleccionas que sea clip de pelicula
seleccionas exportar para actionscript
en el campo de indetificador le pones como nombre mc

despues en la primera capa dibujas un cuadrado con las medidas 200 x 200 en sus coordenadas colocas para y -100 y para x -100.

despues creas una segunda capa y creas un campo de texto DINAMICO de 200 largo texto para x -100 y -10.0 como nombre de instancia le pones texto (fijate que el color de letra sea diferente al cuadrado que dibujaste)

ahora ve a la escena principal y en la primera capa coloca este codigo:



Código:
for (var i = 0; i<10; i++) {
	this.attachMovie("mc", "mc"+i, i);
	setProperty("mc"+i, _y, random(800));
	setProperty("mc"+i, _x, random(800));
	
	this["mc"+i].texto.text = "Amparo"+i;
}
  #4 (permalink)  
Antiguo 10/01/2007, 14:35
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 11 años, 2 meses
Puntos: 30
Re: Referenciar a un movieClip creado dinamicamente

ó asi con puro codigo pon esto en un fotograma vacio:


Código:
for (var i = 0; i<10; i++) {
	this.createEmptyMovieClip("mc"+i, i);
	setProperty("mc"+i, _y, random(800));
	setProperty("mc"+i, _x, random(800));
	this["mc"+i].createTextField("texto", this.getNextHighestDepth(), 0, 0, 200, 30);
	this["mc"+i].texto.text = "Amparo"+i;
}
  #5 (permalink)  
Antiguo 10/01/2007, 14:37
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 11 años, 2 meses
Puntos: 30
Re: Referenciar a un movieClip creado dinamicamente

ó asi para que esten acomodados como un menu:

Código:
for (var i = 0; i<10; i++) {
	this.createEmptyMovieClip("mc"+i, i);
	setProperty("mc"+i, _y, 0);
	setProperty("mc"+i, _x, 0);
	setProperty("mc"+i, _y, i*30);
	this["mc"+i].createTextField("texto", this.getNextHighestDepth(), 0, 0, 200, 30);
	this["mc"+i].texto.text = "Amparo"+i;
}
  #6 (permalink)  
Antiguo 10/01/2007, 14:55
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 11 años, 2 meses
Puntos: 30
Re: Referenciar a un movieClip creado dinamicamente

disculpa lei rapido tu post, creo que esto es lo que querias, igual que los dos ultimos solo pegalo en un fotograma vacio:


Código:
for (var i = 0; i<10; i++) {
	this.createEmptyMovieClip("mc"+i, i);
	setProperty("mc"+i, _y, 0);
	setProperty("mc"+i, _x, 0);
	setProperty("mc"+i, _y, i*30);
	var formato:TextFormat = new TextFormat();
	formato.color = 0xFF0000;
	this["mc"+i].createTextField("texto", this.getNextHighestDepth(), 0, 0, 200, 30);
	this["mc"+i].texto.multiline = true;
	this["mc"+i].texto.wordWrap = true;
	this["mc"+i].texto.border = true;
	this["mc"+i].texto.html = true;
	this["mc"+i].onRelease = function() {
		ruta = this;
		this.texto.text = this._name;
		this.texto.setTextFormat(formato);
		trace(ruta._name);
	};
}
;
  #7 (permalink)  
Antiguo 11/01/2007, 02:54
 
Fecha de Ingreso: enero-2007
Mensajes: 13
Antigüedad: 10 años, 11 meses
Puntos: 0
Re: Referenciar a un movieClip creado dinamicamente

Lo primero de todo muchas gracias por las prontas respuestas.

A ver si me explico mejor.

Yo lo que quiero es que al apretar en el botón "boton_btn" me duplique el movieClip (no con un for, sino con una función que se llame al apretar boton_btn) y le aplique una serie de propiedades y EVENTOS al nuevo clip.

En el for ya he comprobado que funciona, pero en la función no, y francamente, no lo entiendo.

Tal y como lo tengo estructurado:

Código:
var id:Number = new Number(0);
var mc_seleccionado:String=new String();
function anadir_nodo():Void{
     duplicateMovieClip("texto"+id+"_mc", "texto"+String(id+1)+"_mc", _root.getNextHighestDepth());
     id++;
     eval("texto"+id+"_mc").onPress = function() {
     mc_seleccionado=String(id);
     };
}
boton_btn.onRelease=function(){
anadir_nodo();
}
al presionar "boton_btn" la variable "mc_seleccionado" siempre toma el último valor (el más alto) que tenga la variable de tipo Number "id". Lo que quiero es que si aprieto sobre "texto0_mc" la variable "mc_seleccionado" sea igual al String "0", si aprieto "texto1_mc" la variable "mc_seleccionado" sea igual al String "1", y así sucesivamente.

Lo que ocurre en la actualidad es que el valor de "mc_seleccionado" siempre toma le valor más alto de "id" sea cual sea el "texto_mc" que aprietes.

En código simple lo que necesito sería algo parecido a ésto:

Código:
var id:Number = new Number(0);
var mc_seleccionado:String=new String();
function anadir_nodo():Void{
     duplicateMovieClip("texto"+id+"_mc", "texto"+String(id+1)+"_mc", _root.getNextHighestDepth());
     id++;
     texto0_mc.onPress = function() {
     mc_seleccionado=String(0);
     };
texto1_mc.onPress = function() {
     mc_seleccionado=String(1);
     };
texto2_mc.onPress = function() {
     mc_seleccionado=String(2);
     };
texto3_mc.onPress = function() {
     mc_seleccionado=String(3);
     };
texto4_mc.onPress = function() {
     mc_seleccionado=String(4);
     };
//y así N veces dependiendo los "texto_mc"-s que se hayan creado 
//dinámicamente.
}
boton_btn.onRelease=function(){
anadir_nodo();
}

Si alguien me ayuda a solucionar esto le estaría muy agradecido.

Y muchas gracias de nuevo.

Amparito Ribelles.
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 20:32.