Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas con este codigo

Estas en el tema de Problemas con este codigo en el foro de Javascript en Foros del Web. hola a todos, porfavor quisiera que me ayuden con el siguiente codigo : [JSFIDDLE="http://jsfiddle.net/d7nkpope/"][/JSFIDDLE] Código PHP: < style >   div  { position :  absolute ; ...
  #1 (permalink)  
Antiguo 05/09/2014, 11:36
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 14 años
Puntos: 4
Pregunta Problemas con este codigo

hola a todos, porfavor quisiera que me ayuden con el siguiente codigo :

[JSFIDDLE="http://jsfiddle.net/d7nkpope/"][/JSFIDDLE]



Código PHP:
<style>  
div {positionabsolute;left45px;top109px;background-color#bca;width: 42px;border: 1px solid green;}  
</style>
<
script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<button id="go" onclick="a();">&raquo; Run</button>
<button id="go" onclick="b();">&raquo; abajo</button>
<div id="block">Hello!</div>
<script type="text/javascript">
function handleArrowKeys(evt) {
evt = (evt) ? evt : ((window.event) ? event : null);
if (evt) {
switch (evt.keyCode) {
case 39: 
a();
break;
case 40:
b();
break;    
}}}  document.onkeyup = handleArrowKeys;


function a(){
    var posicionx=document.getElementById("block").offsetLeft;
    
$( "#block" ).animate({
left: posicionx+30,
}, 300 );
     }
     
function b(){
    var posiciony=document.getElementById("block").offsetTop;
    
$( "#block" ).animate({
top: posiciony+30,
}, 300 );
     }
</script> 

lo que hace es que al presionar los botones del teclado, derecha y abajo... e div baje o avance 30px por cada presionada con una animacion de 300 minisegundos...

hasta ahi me da perfecto ... el problema se da cuando por ejemplo presiono de rapido 5 veces los botones y ahi se ve la falla ...

Lo que quiero pedirles es de que porfavor me ayuden a como BLOQUEAR las teclas derecha, abajo por un tiempo de 300minisegundos... y luego pasado ese tiempo permita volver a presionarlos !

me ayudan...
  #2 (permalink)  
Antiguo 05/09/2014, 14:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con este codigo

Podrías utilizar una variable comodín a la cual le asignarás un valor cuando se pulse la tecla y se lo cambiarás cuando acabe el efecto. Si se vuelve a pulsar la tecla, verificas el valor de la variable y de no haber cambiado, no ejecutas la función.

Código Javascript:
Ver original
  1. animar = true;
  2.  
  3. function handleArrowKeys(evt) {
  4.     evt = (evt) ? evt : ((window.event) ? event : null);
  5.     if (evt) {
  6.         switch (evt.keyCode) {
  7.             case 39:  
  8.                 if (animar){
  9.                     a();    
  10.                 }
  11.             break;
  12.             case 40:
  13.                 if (animar){
  14.                     b();    
  15.                 }
  16.             break;    
  17.         }
  18.     }
  19. }  
  20.  
  21. document.onkeyup = handleArrowKeys;
  22.  
  23. function a(){
  24.     var posicionx=document.getElementById("block").offsetLeft;
  25.     animar = false;
  26.    
  27.     $( "#block" ).animate({
  28.         left: posicionx+25,
  29.     }, 750, function(){
  30.         animar = true;
  31.     });
  32. }
  33.      
  34. function b(){
  35.     var posiciony=document.getElementById("block").offsetTop;
  36.      
  37.     $( "#block" ).animate({
  38.         top: posiciony+25,
  39.     }, 750, function(){
  40.         animar = true;
  41.     });
  42. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 06/09/2014, 00:40
 
Fecha de Ingreso: mayo-2010
Mensajes: 215
Antigüedad: 14 años
Puntos: 4
Respuesta: Problemas con este codigo

Cita:
Iniciado por Alexis88 Ver Mensaje
Podrías utilizar una variable comodín a la cual le asignarás un valor cuando se pulse la tecla y se lo cambiarás cuando acabe el efecto. Si se vuelve a pulsar la tecla, verificas el valor de la variable y de no haber cambiado, no ejecutas la función.

Código Javascript:
Ver original
  1. animar = true;
  2.  
  3. function handleArrowKeys(evt) {
  4.     evt = (evt) ? evt : ((window.event) ? event : null);
  5.     if (evt) {
  6.         switch (evt.keyCode) {
  7.             case 39:  
  8.                 if (animar){
  9.                     a();    
  10.                 }
  11.             break;
  12.             case 40:
  13.                 if (animar){
  14.                     b();    
  15.                 }
  16.             break;    
  17.         }
  18.     }
  19. }  
  20.  
  21. document.onkeyup = handleArrowKeys;
  22.  
  23. function a(){
  24.     var posicionx=document.getElementById("block").offsetLeft;
  25.     animar = false;
  26.    
  27.     $( "#block" ).animate({
  28.         left: posicionx+25,
  29.     }, 750, function(){
  30.         animar = true;
  31.     });
  32. }
  33.      
  34. function b(){
  35.     var posiciony=document.getElementById("block").offsetTop;
  36.      
  37.     $( "#block" ).animate({
  38.         top: posiciony+25,
  39.     }, 750, function(){
  40.         animar = true;
  41.     });
  42. }

Saludos
muchas gracias :D me sirvio

Etiquetas: js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:07.