Comunidad de diseño web y desarrollo en internet online

Problema con _currentFrame

Citar            
MensajeEscrito el 10 Sep 2006 03:53 am
Hola a todos, soy nuevo en el foro, me encanta esta pagina, es la mejor que he encontrado sobre AS en Flash, los felicito :D ! Pero bueno, tengo un problema sencillo pero me está quemando la cabeza porque no le encuentro la logica, tengo una presentacion en Flash y al momento de apretar la tecla derecha tiene que ir al siguiente Frame, y al presionar la tecla izquierda tiene que retroceder al frame anterior, lo raro de esto es que funciona "pero mal", por ejemplo:

Presiono Boton derecho y me pasa al frame 2.
Presiono Boton izquierdo y me pasa al frame 1.
Presiono Boton derecho y me pasa al frame 3.
Presiono Boton izquiedo y me pasa al frame 1.
Presiono Boton derecho y me pasa al frame 4.
...... y asi sucesivamente, no entiendo porque demonios hace eso, pero ahi les dejo el codigo para ver si me pueden ayudar, les agradezco de antemano su ayuda! :wink:

Código :

var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
var frame:Number  = _root._currentframe;
trace ("Current Frame : "+ frame);

switch (Key.getCode()) {
    
    case Key.RIGHT:
   _root.gotoAndStop(frame+1);
   trace ("Presiono Boton Derecho");
   trace ("Frame al Presionar el Boton Derecho: "+ frame);
    break;
   
    case Key.LEFT :
    _root.gotoAndStop(frame-1);
   trace ("Presiono Boton Izquierdo");
   trace ("Frame al Presionar el Boton Izquierdo: "+ frame);
   break;
    
    }
};

Key.addListener(keyListener_obj);

Por nando.losa

18 de clabLevel



Genero:Masculino  

Querétaro, México

opera
Citar            
MensajeEscrito el 10 Sep 2006 12:41 pm
Tienes que cambiar el valor de la variable frame al presionar los botones. Para eso basta con que pongas un = cuando sumas y restas:

Código :

 _root.gotoAndStop(frame+=1);

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 10 Sep 2006 07:46 pm
Hola zah, gracias por responderme, fijate que ya puse el codigo como tu me hiciste el favor de decirme, pero me hace exacamente lo mismo, no se porque :shock:, te lo vulevo a poner para ver si si esta correcto como lo escribi :

Código :

var keyListener_obj:Object = new Object();

keyListener_obj.onKeyDown = function() {
var frame:Number  = _root._currentframe;
trace ("Current Frame : "+ frame);
switch (Key.getCode()) {
    case Key.RIGHT:
   _root.gotoAndStop(frame+=1);
   trace ("Presiono Boton Derecho");
   trace ("Frame al Presionar el Boton Derecho: "+ frame);   
    break;
   
    case Key.LEFT :
        _root.gotoAndStop(frame-=1);
   trace ("Presiono Boton Izquierdo");
   trace ("Frame al Presionar el Boton Izquierdo: "+ frame);
    break;
    
    }
};

Key.addListener(keyListener_obj);


Les agradezco a todos por su ayuda! :D

Por nando.losa

18 de clabLevel



Genero:Masculino  

Querétaro, México

opera
Citar            
MensajeEscrito el 11 Sep 2006 07:18 pm
Hola nando, te pongo el código corregido y funcional y luego te explico:

Código :

if(cargado == undefined){
   var ir = function (mover){
      destino = _root._currentframe + mover
      gotoAndStop(destino)
   }
var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
   var frame:Number = _root._currentframe;
   
   tecla = Key.getCode();
   if ( tecla == 39){
      ir(1);
      frame = _root._currentframe;
      trace("Current Frame : "+ _root._currentframe);
      trace("Presiono Boton Derecho");
      trace("Frame al Presionar el Boton Derecho: "+frame);
   }
   else if(tecla == 37){
      ir(-1);
      frame = _root._currentframe;
      trace("Current Frame : "+ _root._currentframe);
      _root.gotoAndStop(destino);
      trace("Presiono Boton Izquierdo");
      trace("Frame al Presionar el Boton Izquierdo: "+frame);
   }
   
};
}
cargado = true;
Key.addListener(keyListener_obj);
stop();


Primero, al poner tu código sin alguna bandera (cargado), cada vez se redefinía el escuchador y las variables volvian a tomar los valores que les habías asignado al utilizar el listener, por eso el comportamiento extraño.
Luego, lo que estabas haciendo al utilizar += ó -=, es que estabas haciendo fue un pre o postincremento, es decir le estabas asignando un nuevo valor a la variable que junto con la situación anterior, te originaban saltos de varios frames, dependiendo el valor que tomaran.
Por último redefiní la acción que quieres hacer en una función, que se invoca al oprimir la tecla de acuerdo a lo que se define en el listener.
Espero te sirva, saludos.

Por RafaelTol

33 de clabLevel



Genero:Masculino  

México

msie
Citar            
MensajeEscrito el 11 Sep 2006 08:20 pm
Hola Rafa, te agradezco mucho tu ayuda, ya sirvio todo a la perfección, no sabia que al volver a llamar al listener me tomaba los valores anteriores del frame, de verdad que muchas gracias! :D

Por nando.losa

18 de clabLevel



Genero:Masculino  

Querétaro, México

opera
Citar            
MensajeEscrito el 11 Sep 2006 11:22 pm
De nada nando, aunque por las prisas se me fueron unos errores de dedo:
dice

Código :

else if(tecla == 37){      
      ir(-1);      
     frame = _root._currentframe;       
     trace("Current Frame : "+ _root._currentframe);
     _root.gotoAndStop(destino);
      trace("Presiono Boton Izquierdo");
      trace("Frame al Presionar el Boton Izquierdo: "+frame);
   }

debe decir

Código :

else if(tecla == 37){      
      ir(-1);      
     frame = _root._currentframe;       
     trace("Current Frame : "+ _root._currentframe);
     trace("Presiono Boton Izquierdo");
      trace("Frame al Presionar el Boton Izquierdo: "+frame);
   }


Tambien aclarar que lo que te quería explicar es que estabas haciendo un preincremento o predecremento, al usar += ó -=, lo que realmente modificaba el valor de la variable.
Espero disculpes el error y te haya sido de utilidad.
Saludos.
Rafael
[/code]

Por RafaelTol

33 de clabLevel



Genero:Masculino  

México

msie

 

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