Mi date una mano con un' animazione in JavaScript

di Anonimizzato14548 il
3 risposte
L'animazione è questa:

http://aharrisbooks.net/h5g/h5g_8/walkAnim.htm

Mi piacerebbe modificare il codice in modo che l'animazione del personaggio abbia luogo quando i tasti sono attualmente premuti, (in stile gioco Super Mario Bros del 1985, per chiarirci) e non quando vengono rilasciati, come nell'esempio in questione. Quando il tasto è premuto, se notate, il personaggio si muove e basta (no animazione).

Non sono un grande conoscitore di JavaScript, e la libreria in questione, SimpleGame.js, non è molto popolare. A corollario di ciò, né l'autore, né il forum del sito, sembrano essere attualmente attivi.

E' un po' che ci provo ma non riesco a trovare una soluzione...

3 Risposte

  • Perche' hai sbagliato l'approccio sul funzionamento del codice... almeno per come tu lo hai descritto.

    Il codice parte gia' con un movimento del personaggio che viene animato (in pratica e' una successione di tanti fotogrammi).

    Il movimento va' in una direzione, e continua ad andare in quella direzione fintantoche' non premi un tasto delle frecce per cambiargli direzione, (non devi tenere premuto il tasto freccia per sempre, basta premerlo e rilasciarlo per far cambiare la direzione al personaggio che continuera' a camminare per fatti suoi sempre con l'animazione).

    Infatti la barra spaziatrice ferma il personaggio.

    Nel codice ci sono una serie di condizioni (IF per intenderci) che verificano se premi un tasto freccia oppure la barra spaziatrice, se lo fai allora il personaggio cambia direzione oppure si ferma.

    E' proprio il codice impostato cosi... se lo vuoi cambiare ci devi lavorare parecchio, (questo perche' hai detto di non conoscere bene la programmazione).
  • Infatti non sono un esperto, ma il codice non è mio, è semplicemente open source, come lo è la libreria su cui si appoggia. Ma ho provato e riprovato, non mi sembra che ci sia nulla di sbagliato in:
     if (keysDown[K_LEFT]){
                    character.setSpeed(1);
                    character.playAnimation()
                    character.setMoveAngle(270);
                    character.setCurrentCycle("left");
    io penso che il problema di fondo sia il fatto che "keysDown" viene interpretato come "il tasto viene semplicemente premuto e poi rilasciato", infatti l'animazione parte quando si rilascia il tasto... bisognerebbe trovare qualcosa di simile a "keysPressed" (il tasto viene premuto e mantenuto premuto). Ma if (keysPressed) non fa parte della libreria a cui si appoggia l'animazione....e da un errore....
  • C'è qualcosa tipo keyUp?
Devi accedere o registrarti per scrivere nel forum
3 risposte