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

Asignar funciones a movieclip creado dinámicamente.

Estas en el tema de Asignar funciones a movieclip creado dinámicamente. en el foro de Flash y Actionscript en Foros del Web. Hola, tengo un MC que creo dinámicamente con createEmptyMovieClip. A dicho Mc necesito crearte un campo de texto sobre él, y asignarle una función para ...
  #1 (permalink)  
Antiguo 30/11/2010, 04:40
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 17 años, 5 meses
Puntos: 2
Asignar funciones a movieclip creado dinámicamente.

Hola, tengo un MC que creo dinámicamente con createEmptyMovieClip. A dicho Mc necesito crearte un campo de texto sobre él, y asignarle una función para el evento onPress.

Lo hago de la manera siguiente (me crea bien los movieclips, pero no me funciona, ni el campo de texto, ni el enlace):
Código:
function creaMC(posx:Number, posy:Number, nombre:String, car:String): Void
{
        _root.contenedor.createEmptyMovieClip(nombre, _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre]._visible = false; 
	_root.contenedor[nombre]._x = posx;
        _root.contenedor[nombre]._y = posy; 
	_root.contenedor[nombre].loadMovie("punto.png"); 
	_root.contenedor[nombre].createTextField("campo", 1, 100, 100, 300, 100);
	_root.contenedor[nombre].campo.text = car;
	enlazar(_root.contenedor[nombre], nombre);
}
	

function enlazar(local: String, id:String):Void
{
	eval(local).onPress = function():Void
	{
		var enlace = "http://localhost/aplicacion/elemento/" + id; 
		getURL (enlace);
	};
}

¿Alguien ve por qué me falla? Muchas gracias!
  #2 (permalink)  
Antiguo 30/11/2010, 08:09
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Respuesta: Asignar funciones a movieclip creado dinámicamente.

Hola Ferola! Mmm.... tendría que probarlo bien, pero fijate a ver si te sirve esto:
Código:
function creaMC(posx:Number, posy:Number, nombre:String, car:String): Void
{
        _root.contenedor.createEmptyMovieClip(nombre, _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre]._visible = false; 
	_root.contenedor[nombre]._x = posx;
        _root.contenedor[nombre]._y = posy; 
	_root.contenedor[nombre].loadMovie("punto.png"); 
	_root.contenedor[nombre].createTextField("campo", 1, 100, 100, 300, 100);
	_root.contenedor[nombre].campo.text = car;

        _root.contenedor[nombre].onPress = function(){
                var enlace = "http://localhost/aplicacion/elemento/" + this.nombre; 
		getURL (enlace);
        }
}
A ver si puede funcionar asi??? :D
  #3 (permalink)  
Antiguo 01/12/2010, 02:56
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Asignar funciones a movieclip creado dinámicamente.

Hola!

Gracias por tu aporte, pero algo similar es lo que yo tenía, y probando lo que me has dejado es lo mismo, no funciona.
No da error, pero ni me funciona el enlace sobre el punto ni veo la letra en el campo de texto. ¿Puede ser que quede por detrás del dibujo la letra, por eso no la veo? Y el enlace, ni idea.

También he pensado en poner la misma profundid a que uso en
_root.contenedor.createEmptyMovieClip(nombre, _root.contenedor.getNextHighestDepth());

en la sentencia _root.contenedor[nombre].createTextField("campo", _root.contenedor.getNextHighestDepth(), 100, 100, 300, 100); e incluso _root.contenedor[nombre].getNextHighestDepth()

Pero tampoco he acertado con eso. ¿Alguien puede ayudarme? El código no falla, pero no hay ni texto, ni enlace sobre el movieclip.
Es bastante urgente para mi!
Muchas gracias.

Última edición por ferola; 04/12/2010 a las 12:20
  #4 (permalink)  
Antiguo 04/12/2010, 12:23
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Asignar funciones a movieclip creado dinámicamente.

¿Alguien puede ayudarme con éste problema? Gracias.
  #5 (permalink)  
Antiguo 06/12/2010, 16:10
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Asignar funciones a movieclip creado dinámicamente.

Hola

He comprobado que tiene que ver con realizar esto dentro de un movieclip que está a su vez incluido en otro (en _root tengo a contenedor, y dentro de contenedor creo estos MC's). ¿Quizás problema por la profundidad?
Si lo hago en root me sale perfectamente, pero así no me vale. Por favor, estoy probándolo todo, pero es ya no lo sé hacer y me urge.

Dejo el código tal cuál lo tengo, esperando que alguien más experto que yo sepa ayudarme.
Código:
function crearMC(posx:Number, posy:Number, nombre:String, letra:String): Void
{
   var holder:MovieClip = _root.contenedor.createEmptyMovieClip(nombre, _root.contenedor.getNextHighestDepth());
   holder._x = posx; 
   holder._y = posy; 
   var loader:MovieClip = holder.createEmptyMovieClip("loader", _root.contenedor.getNextHighestDepth()); 
   loader.loadMovie("icono.png"); 
   loader.createTextField("campo", loader.getNextHighestDepth(), 20, 1, 300, 100); 
   loader.campo.text = letra; 
}
Gracias.
  #6 (permalink)  
Antiguo 07/12/2010, 09:04
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Respuesta: Asignar funciones a movieclip creado dinámicamente.

Bueno, algún avance pude realizar, me falta solamente que cuando haga click lleve a la página. Por alguna razón no le asigna el evento onRelease. Lo que hice fue crear un movieclip para el punto.png, y otro para el texto que se quiere visualizar:

Código:
function creaMC(posx:Number, posy:Number, nombre:String, car:String): Void
{
	_root.contenedor.createEmptyMovieClip(nombre, _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre]._visible = true; 
	_root.contenedor[nombre]._x = posx;
	_root.contenedor[nombre]._y = posy; 
	_root.contenedor[nombre].loadMovie("punto.png");
	
	_root.contenedor.createEmptyMovieClip(nombre + "txt", _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre + "txt"]._x = posx + 25
	_root.contenedor[nombre + "txt"]._y = posy
	_root.contenedor[nombre + "txt"].createTextField("campo", _root.contenedor.getNextHighestDepth(), 0, 0, 300, 100);
	_root.contenedor[nombre + "txt"].campo.text = car;
	
	_root.contenedor[nombre].onRelease = function(){
		trace("Click")
    	//var enlace = "http://www.google.com.ar/" + this.nombre; 
		//getURL (enlace);
	}
}

creaMC(10,10,"pepe","texto primero")
creaMC(20,20,"pepe2","texto segundo")
Ya casi esta! casi casi!!!
  #7 (permalink)  
Antiguo 07/12/2010, 09:22
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Respuesta: Asignar funciones a movieclip creado dinámicamente.

A ver... creo que ya lo tengo, voy a hacer unas acotaciones del código, para que comprendas lo que trate de hacer.

Por lo visto, si le asignaba el evento al movieclip que carga el archivo punto.png, no funciona. Lo que hice fue crear otro movieclip, un botón invisible del mismo tamaño que el archivo punto.png y le asigné el evento onRelease. Fijate que fue creado con beginFill/endFill. Lo que vas a tener que hacer es cambiar el tamaño de ese movieclip de acuerdo al tamaño del archivo punto.png, para que ese "botón invisible" te quede igual de tamaño. Yo en el ejemplo puse 22x15 (22 de ancho, 15 de alto), vos tendrías que cambiar de acuerdo a lo que mida en píxeles tu archivo punto.png ¿Se entiende?

Asi que por cada ítem te quedarían tres movieclips, uno para el archivo punto.png, otro para el botón invisible que sirve para redireccionar a la página deseada, y otro para el cuadro de texto. Todos generados dentro de un movieclip contenedor. Aquí el código:

Código:
function creaMC(posx:Number, posy:Number, nombre:String, car:String): Void
{
	//************************************************************************
	//Cargo el archivo punto.png
	_root.contenedor.createEmptyMovieClip(nombre, _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre]._visible = true; 
	_root.contenedor[nombre]._x = posx;
	_root.contenedor[nombre]._y = posy; 
	_root.contenedor[nombre].loadMovie("punto.png");
	
	//************************************************************************
	//Genero el botón que me redirige a otra página, con su evento para click
	_root.contenedor.createEmptyMovieClip(nombre + "marco", _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre + "marco"].beginFill(0xF5F8FA, 0); 
	_root.contenedor[nombre + "marco"].lineStyle(1, 0x3C536C, 0);
	_root.contenedor[nombre + "marco"].moveTo(posx, posy)//(50, 0);
	_root.contenedor[nombre + "marco"].lineTo(posx + 22, posy);
	_root.contenedor[nombre + "marco"].lineTo(posx + 22, posy+15);
	_root.contenedor[nombre + "marco"].lineTo(posx, posy+15);
	_root.contenedor[nombre + "marco"].endFill();
	_root.contenedor[nombre + "marco"].nombre = nombre
	
	_root.contenedor[nombre + "marco"].onRelease=function(){
		var enlace = "http://localhost/aplicacion/elemento/" + this.nombre; 
		getURL (enlace);
	}
	
	//************************************************************************
	//Genero cuadro de texto
	_root.contenedor.createEmptyMovieClip(nombre + "txt", _root.contenedor.getNextHighestDepth());
	_root.contenedor[nombre + "txt"]._x = posx + 25
	_root.contenedor[nombre + "txt"]._y = posy
	_root.contenedor[nombre + "txt"].createTextField("campo", _root.contenedor.getNextHighestDepth(), 0, 0, 300, 100);
	_root.contenedor[nombre + "txt"].campo.text = car;
}

creaMC(10,10,"pepe","texto primero")
creaMC(40,40,"pepe2","texto segundo")
A ver si esto te puede ayudar!!! :D

Edito: Aquí te paso los archivos de pruebas que yo hice, por si queres seguir editando. A mi me funcionó bien :D

Última edición por lucasiramos; 07/12/2010 a las 09:30
  #8 (permalink)  
Antiguo 07/12/2010, 11:58
 
Fecha de Ingreso: noviembre-2006
Mensajes: 199
Antigüedad: 17 años, 5 meses
Puntos: 2
Respuesta: Asignar funciones a movieclip creado dinámicamente.

Creo que ya he pillado el error. Uso una máscara, y creí que no tendría problema por ello, pero se ve que es eso...que las máscaras y los textos dinamicos dab problemas (por lo que vi por internet...)


¿Cómo lo puedo arreglar?


Gracias!
  #9 (permalink)  
Antiguo 07/12/2010, 23:13
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Respuesta: Asignar funciones a movieclip creado dinámicamente.

Aaahh, esta bien... Para eso hay que incorporar los caracteres. Mmm... no estoy con Flash ahora, pero es eso... si vos tenes una máscara y un texto dinámico adentro, si no haces la incorporación de los caracteres no te va a mostrar ese texto. Fijate si podés buscar por la web como se realiza la incorporación de los caracteres a textos creados dinamicamente.

Saludos!

Etiquetas: asignar, funciones, movieclip
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 17:41.