Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Animare sprite destra/sinistra con un click

    Ho dei problemi con questa animazione jQuery.
    Dovrebbe caricare animazione a destra o sinistra a seconda di dove clicchi
    Lo script non carica sempre l'animazione corretta e la velocita aumenta ogni volta che clicchi nella stessa direzione.
    Il codice per le animazioni l'ho preso da qui 2d-sprite-animation
    Devo aver combinato qualcosa con il setInterval

    Html
    codice:
    <div id="divposizione">MOUSE XY</div>	
    <div id="mappa" style="width:960px; height:80px;  
       background-color:black; "> 	
     <div id="player"></div>  
    </div>
    <style> #player{background-image:url('girl_60x60.png'); 
    	width:60px; height:60px; position:relative; 
    	z-index:12; left:465px;}</style>
    Javascript
    codice:
     // click event 
     $('#mappa').click(function(e) { 
      // prendo le coordinate
      var posX = e.pageX ;
      var posY = e.pageY;
      //stampa le coordinate X e Y nel riquadro
      $('#divposizione').html("X: " + posX + " Y: " + posY);	
    	
      if (posX <= 480) {   //controlla click rispetto al centro
      
       setInterval('ani_left()',100); //animazione sinistra								
      } else {				
       setInterval('ani_right()',100); //animazione destra
      }
    }); 
    
    var frame = 1;
    
    //  Animazione destra
    function ani_right() {
     var left = 60 * frame;  //ogni frame sposta di 60px
     var top = 0;
     $('#player').css('backgroundPosition','-'+left+'px -'+top+'px');
     frame++;
    }
    //  Animazione sinistra
    function ani_left() {
     var left = 60 * frame;
     var top = 60;   //animazioni riga sottostante di 60px
     $('#player').css('backgroundPosition','-'+left+'px -'+top+'px');
     frame++;
    }
    Immagini allegate Immagini allegate
    Il Cavaliere dei Sogni

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Visto che usi jquery, userei Animate più adatto per queste cose
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e' giusto non usare animate, perche' deve saltare in maniera netta a diverse posizioni del background nel tempo

    puoi usare una variabile globale (come quel var frame)

    var timer=false

    nella funzione, ad ogni click pulisci il timer
    if(timer) clearInterval(timer)
    prima di settarlo

    if (posX <= 480) { //controlla click rispetto al centro

    timer=setInterval('ani_left()',100); //animazione sinistra
    } else {
    timer=setInterval('ani_right()',100); //animazione destra
    }

    ciao

  4. #4
    Funziona!!
    Non ci speravo piu.
    Avevo provato con piu tecniche di animazione ma ogni volta non andava, intuivo che il problema doveva essere quel setInterval, ma sono ancora niubbo per capire come usarlo. Grazie mille!
    Il Cavaliere dei Sogni

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.