Comunidad de diseño web y desarrollo en internet online

[PROBLEMA] Incrementar el valor de una variable.

Citar            
MensajeEscrito el 08 Dic 2010 09:34 pm
Hola, Soy nuevo en AS3 asique si mi pregunta es demasiado tonta disculparme jeje.

Bueno mi duda es esta:

tengo una variable a y un movieclip que se llama boton, lo que quiero es que cada vez que se pulse el movieClip se incremente la variable a.

Código :

var a:Number = 1;
boton.addEventListener(MouseEvent.CLICK,aumento);
function aumento(e:MouseEvent)
{
   ++ a;
}
trace(a);


Si pongo esto por mas que pulse el boton el trace siempre me muestra que a es 0. pero realmente dentro de la funcion el incremento funciona ya que si pongo:

Código :

var a:Number = 1;
boton.addEventListener(MouseEvent.CLICK,aumento);
function aumento(e:MouseEvent)
{
   a++;
   trace(a);
}


La variable se incrementa cada vez que pincho.

PD: si en el primer codigo pongo return ++ a; sigue sin funcionar XD lo digo para ir descartando ideas.

Conclusión XD, La variable se incrementa dentro de la función pero fuera no.. y querría saber porque ya que en funciones que no son de evento como:

Código :

var a:Number = 1;

function incrementar(a){
return ++ a;
}
trace(incrementar(a));


funciona..

Un saludo y espero que puedan ayudarme ;).

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 08 Dic 2010 11:03 pm

Código ActionScript :

var a:Number = 1;
boton.addEventListener(MouseEvent.CLICK,aumento);
boton2.addEventListener(MouseEvent.CLICK,verificar);
function aumento(e:Event):void
{
   a++;
}
function verificar(e:Event):void{
   trace("A ahora vale: "+ a);
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome
Citar            
MensajeEscrito el 08 Dic 2010 11:33 pm
Gracias Hernán ;) funciona perfectamente :P pero a ver si me podrías resolver 2 dudillas.

1ª :void para que sirve exactamente?.
2ª mm la variable se actualiza pero el valor actualizado lo veo dentro de funciones no? es decir en el código "general" va a seguir siendo 1 no?. Igualmente esta no es muy importante porque no necesito verla en el codigo "general" jeje.

ya de paso, no se si se puede en el mismo tema o hay que hacer otro, querría preguntar:

si tengo stage.addEventListener(MouseEvent.CLICK,funcion2);
funcion2(e:MouseEvent){

}
y la otra función nombrada antes, porque al clickear el botón me ejecuta la función de stage y la del botón? hay algún método para que solo me ejecute la del botón?. el objetivo es que Stage se ejecute al hacer click en el escenario que está sin movieclips solo pero entonces quizás no deba usar esa constante, en ese caso.. cual podría usar?.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 08 Dic 2010 11:40 pm
Bien...

Respondiendote:

1. Void se usa para declarar que la función no tiene un return. Si esta función devolviera el valor a, tendrías que poner:

Código ActionScript :

function algo():Number


2. No, la variable queda dentro del scope donde fue creada. Si esta variable fuese creada dentro de una función, sería SOLO accesible, dentro de ESA función, no de todas las funciones.

Lo que pasa es que si escribes algo así:

Código ActionScript :

var a:Number = 0;
// código botón
trace(a);


Eso devolverá 0, ya que la función se ejecuta luego del trace. Lo que hice, fue crear una función para devolverme el valor luego de ser seteado por la otra función.

3. No es bueno asignar a todo el stage como dices.

4. Ejecuta ambas, porque el stage es todo, porque eso no es bueno asignar nada al stage. Pierdes control.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome
Citar            
MensajeEscrito el 09 Dic 2010 03:48 pm
Bueno Hernan pues Muchas gracias por tu respuesta jeje, Se nota que en este foro si hay gente que sabe de AS3 :D. Así que a favoritos porque estaba buscando un foro de estos temas y de 4 aquí es el único donde me supieron responder la duda ^^. Para Stage, como no se que usar sino, lo que he hecho es un if en el cual compruebo que las coordenadas de un clic no estan dentro de un cuadrante que defino asi si esta dentro la función de stage no hace nada y listo.

Un saludo y gracias de nuevo por la ayuda :wink:.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome

 

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