Comunidad de diseño web y desarrollo en internet online

[Noob alert] Instancias de variables en frame de Flash.

Citar            
MensajeEscrito el 11 Mar 2013 10:47 pm
Buenas tardes :)

Tengo una variable que quiero controlar por medio del pulsado de botones, nada del otro mundo.
En el keyframe donde colocaré todo mi código, declaro la variable.
Luego, intento modificar esta variable al pulsar un botón

Código ActionScript :

var esta_on = "no";

//...
// Esta es la función que llama el EventListener

function entraCorriente(event:MouseEvent):void
{
   gotoAndPlay(2);
   esta_on = "si";
}


El problema es que al realizar esa asignación, esta_on toma el valor "si" solo dentro de la función entraCorriente, en vez de modificar la variable "principal" que está en el frame. Esto lo compruebo accediendo a esta_on desde otra función, la cual me retorna que esta_on == "no".

Imagino que es un problema de scope, pero realmente no sé cómo indicarle a Flash la instancia de la variable que quiero afectar.

Agradecería mucho una indicación :)

Saludos

Por Lunatic Lycanthrop

Claber

1203 de clabLevel

7 tutoriales

1 ejemplo

Genero:Masculino  

The dark places where wolves access internet with 46,6 kbps

firefox
Citar            
MensajeEscrito el 12 Mar 2013 03:36 am
Saludos!!
No creo que sea un problema de scope como dices, pues según veo debería funcionar tal cual está.

En realidad no puedo decirte donde falla, pero puedo pensar en posibles escenarios...

1. Podrías poner la asignación antes del gotoAndPlay y asegurar que la asignación se realiza inmediatamente.
2. Asegúrate de que la función que llamas para verificar, se llame después de "entraCorriente", haz un trace en cada una para ver cuál va primero.
3. Verifica que después de salir de ese keyframe, no vuelva a entrar en él.

Por cdmazom

10 de clabLevel



 

desarrollo de videojuegos

chrome
Citar            
MensajeEscrito el 12 Mar 2013 10:59 am
BuenAS:

¿Ese código lo tienes escrito en una línea de tiempo que constantemente se está reproduciendo? Si no lo tienes claro, pon un trace, como por ejemplo

trace('bucle');

si cada cierto tiempo se imprime 'bucle', está pasando lo que me imagino:

En cada bucle del MovieClip la variable toma:

var esta_on = "no";

O sea, cada vez que la cabeza lectora pasa por este fotograma con código, la variable se resetea a "no".

Salvo que SEA TU INTENCIÓN HACERLO ASÍ, no escribas código en una línea de tiempo que se está reproduciendo, ya que se va a ejecutar en cada bucle. Para evitar esto, por ejemplo, podrías escribir el código en el fotograma 1 y cuando se llegue al final de la animación hacer un gotoAndPlay(2), y así, la cabeza lectora no vuelve a pasar por el fotograma 1 donde tienes el código.

Aunque la mejor opción, desde mi punto de vista, es NO ESCRIBIR NUNCA código en la línea de tiempo.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 12 Mar 2013 09:46 pm
Saludos!

El problema era exactamente el que mencionan :D Al regresar al frame las variables se reinicializaban y me parecía que no podía acceder a ellas.

Lo solucioné de manera cutre pues tenía algo de prisa, creando un objeto transparente en el escenario y asignandole las variables que quería usar como parámetros. U_U

Muchas gracias, tendré en cuenta importar un archivo .as para futuros proyectos y no escribir en los frames.

Por Lunatic Lycanthrop

Claber

1203 de clabLevel

7 tutoriales

1 ejemplo

Genero:Masculino  

The dark places where wolves access internet with 46,6 kbps

firefox

 

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