Comunidad de diseño web y desarrollo en internet online

AS3: problema con variables,

Citar            
MensajeEscrito el 18 May 2010 01:26 pm
Buscando en internet, encontre una solución, que no se si es correcta, para usar variables globales, es tener un archivo .as con el siguiente código:
package
{
public class MisGlobales
{
public static var vars:Object = [];
}
}

resulta que yo tengo este código en mi animación, ubicada en el primer fotograma:

import MisGlobales;
MisGlobales.vars.root = this;

MisGlobales.vars.i = 0;
trace("Compruebo que esto funcione:" + MisGlobales.vars.i);

if (MisGlobales.vars.i == 0)
{
MisGlobales.vars.i = 1;
Ins_boton_Inicio.addEventListener(MouseEvent.CLICK,Inicio);
}else if (MisGlobales.vars.i == 1)
{
MisGlobales.vars.i = 0;
Ins_boton_Inicio.addEventListener(MouseEvent.CLICK,Pausa);
}
function Inicio(e:Event):void
{
MisGlobales.vars.i = 1;
Ins_Flecha_Horas.play();
Ins_Aguja_Minutos.play();
}
function Pausa(e:Event):void
{
MisGlobales.vars.i = 0;
Ins_Flecha_Horas.stop();
Ins_Aguja_Minutos.stop();
}

resulta que cuando ejecuto la animación, funciona el Play(), pero el botón deberia poder poner stop a la misma, lo cual no ocurre pork el valor de MisGlobales.vars.i nunca cambia.

Si alguien sabe como puedo solucionar esto, lo agradecería mucho.

De ser necesario puedo subir los .fla y .as
Desde ya muchas gracias.

Por artic22

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 May 2010 02:25 am
Hombre no se mucho pero el hecho de que var sea una global de tipo "Static" seguro que tiene que ver... prueba hacerla dinamica.

Por Atomsk

350 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 21 May 2010 10:09 am
Artic, además de lo comentado por Atomsk, creo que hay algo confuso con lo de "variables globales". Una variable que se define "a nivel de" clase es ya global.
Vamos, si tienes en tu película principal en un frame

Código ActionScript :

var mivariable:Number=10

Esta variable va a ser "global", en el sentido de que la puedes usar dentro de cualquier función que definas en la película principal. O, incluso, puedes acceder a dicha variable desde un objeto que pertenezca a esa clase si puedes acceder al stage.

No veo demasiado sentido a tenerlas dentro de una clase. Sí es cierto que de vez en cuando se usa el patrón Singleton tal y como comenta Temeister en este tip Pero ya te digo que eso es cuando tenemos muchas clases diferentes y queremos tener "un almacen de variables" accesibles desde cualquier clase (otra cosa es que no sea acosejable ni "purista" con la OOP). Lo que hace que una variable sea "global" en el sentido que creo que buscas tú, es dónde la declaramos.

Código ActionScript :

var variable_global:Number=10
function hacerAlgo(){
     trace(variable_global) //<---la podemos usar aquí
     var variable_temporal:String="Hola Mundo" //<--sólo la podremos usar DENTRO de la función
     trace(variable_temporal)
}

Por Eliseo2

710 de clabLevel



 

firefox

 

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