Comunidad de diseño web y desarrollo en internet online

Problema conjugando variables

Citar            
MensajeEscrito el 05 Nov 2010 09:36 pm
Hola, tengo el siguiente problema. Un error con el que no llego a encontrarle la solución. Trato de poner el ejemplo lo más simple posible.

Código ActionScript :

function BotonOver(event:MouseEvent):void {
   nombre=event.currentTarget.name; //Acá tomo el nombre de MovieClip sobre el que pongo el mouse.
   this["destino"+i]=nombre; //Acá creo una variable conjunción de el nombre "destino" y un número i.
   trace(this["destino"+i]); //Hasta acá todo bien, me devuelve el nombre del MovieClip en el cual pongo encima el mouse.
   MovieClip(this["destino"+i]).play(); //Y acá es donde me da el error. Quiero hacer que ese mismo MovieClip haga Play(). Y en lugar de eso, devuelve la frase de más abajo. (Al poner el mouse en un botón llamado "bio").
}


Código :

TypeError: Error #1034: Error de conversión forzada: no se puede convertir "bio" en flash.display.MovieClip.
   at header_fla::MainTimeline/BotonOver()


Agradezco a quien tenga una solución para ésto.

Por Sebaslynx

237 de clabLevel

2 tutoriales

Genero:Masculino  

Mendoza, Argentina

chrome
Citar            
MensajeEscrito el 05 Nov 2010 10:40 pm
Intentas darle play a una variable que se supone es solo un nombre osea un String, dale play al currentTarget que es el movieclip sobre el cual se despacho el evento.

Código ActionScript :

MovieClip( e.currentTarget).play();


Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Nov 2010 10:50 pm
BuenAS:

Haces

this["destino"+i] = nombre;

donde nombre = "bio". Y más tarde intentas hacer un play de "bio", que es una cadena de texto, y lógicamente da error :)

Imagino que lo que quieres es guardar, de alguna forma, el nombre del currenTarget, en función de this["destino"+i], puedes crearte un Dictionary para guardarlo:

FUERA DEL ANTERIOR MÉTODO, creas el diccionario:

Código ActionScript :

var misNombres:Dictionary = new Dictionary();


y cambia:

Código ActionScript :

function BotonOver(event:MouseEvent):void { 
   nombre=event.currentTarget.name; 
   misNombres[this["destino"+i]] = nombre;
   trace(misNombres[this["destino"+i]]); 
   MovieClip(this["destino"+i]).play();
}



Ahora en "misNombres" has guardado "bio" y puedes acceder a dicho nombre a través de nombres[this["destino"+i]] sin cambiar el moviClip por una cadena de texto.

Un saludo

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 05 Nov 2010 11:14 pm
Hola, gracias por las respuestas, aunque todavía no llego a dar en la tecla con esto.
- Con la respuesta de Angel Roberto encuentro una solución momentánea, que en realidad vuelve a tener trabas más adelante en el trabajo que estoy haciendo porque vuelvo a tener la necesidad de crear una nueva variable (destino1, destino2, etc)

- Con al respuesta de Lunatikos sucede que me sigue tomando los datos del nombre como cadena de texto. Sigue dando el mismo error de conversión forzada...

Por Sebaslynx

237 de clabLevel

2 tutoriales

Genero:Masculino  

Mendoza, Argentina

chrome
Citar            
MensajeEscrito el 05 Nov 2010 11:28 pm
Ahí parece que funcionó

lo puse de esta manera usando lo que me dijiste Lunatikos:

Código ActionScript :

function BotonOver(event:MouseEvent):void {  
   nombre=event.currentTarget.name;  
   misNombres[this["destino"+i]] = nombre; 
   MovieClip(this[misNombres[this["destino"+i]]]).play(); 
}


Y así hizo el tan esperado Play()!!

Muchas gracias a los dos por su ayuda!!

Por Sebaslynx

237 de clabLevel

2 tutoriales

Genero:Masculino  

Mendoza, Argentina

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.