lunedì 21 luglio 2014

Muovere (meglio) un'immagine

Riprendendo l'ultimo post, mi sono accorto che il messaggio arrowkey restituisce solo l'identificativo di un pulsante. Se si vuole muovere l'immagine utilizzando più tasti freccia insieme ci sono dei problemi, perchè solo il primo pulsante premuto viene restituito nel messaggio.
Per fortuna ci sono altri messaggi che gestiscono tutti i pulsanti premuti, contemporaneamente o meno. Io per ora vi suggerisco di usare keysdown
Questo messaggio resitusce la lista dei pulsanti premuti, utilizzando l'identificativo numerico; ad esempio:
  • 65361 = freccia sinistra
  • 65362 = frecci sù
  • 65363 = freccia destra
  • 65364 = freccia giù
Quindi possiamo modificare il codice così:

on arrowkey puls      
   put the keysdown into temp2
   repeat for each item tItem in temp2
      switch tItem
         case "65362"
            put the angle of image "car" into temp         
            #creaimo una strina del tipo x,y
            put -5 * sin( pi / 180 * temp) into movimento
            put "," after movimento
            put -5 * cos( pi / 180 * temp) after movimento
            move image "car" relative movimento      
            break         
         case "65364"
            #dobbiamo muoverla in indietro rispetto al verso del muso
            #prendiamo l'angolo della direzione
            put the angle of image "car" into temp         
            #creaimo una strina del tipo x,y
            put 5 * sin( pi / 180 * temp) into movimento
            put "," after movimento
            put 5 * cos( pi / 180 * temp) after movimento
            move image "car" relative movimento      
            break         
         case "65361"
            put the angle of image "car" into temp
            add 1 to temp
            set the angle of image "car" to temp
            break               
         case "65363"
            put the angle of image "car" into temp
            add -1 to temp      
            set the angle of image "car" to temp
            break                        
      end switch
   end repeat
end arrowkey