Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28

    [JAVA] Far muovere un'immagine

    Ciao a tutti, vorrei far muovere un'immagine, come in un giochino, in tutte le direzioni. Per farlo implemento il metodo
    codice:
    "public void keyPressed(KeyEvent e){}"
    con il codice, limitando il campo di azione alle dimensioni massime della finestra in cui voglio visualizzare l'immagine. L'immagine riesco a farla muovere, però ogni volta che spingo, per esempio "UP", fa uno scattino in su, si ferma, e poi continua normalmente. Così per tutte le direzioni. Vorrei in pratica eliminare quella specie di momento di pausa. Questo è il mi codice:
    codice:
    public void keyPressed(KeyEvent e)
        {
            int tasto = e.getKeyCode();
            
            switch (tasto)
            {
                case (KeyEvent.VK_UP):
                    y -= 10;
                    if (y < 0)
                    {
                        y = 0;
                    }
                break;
                
                case (KeyEvent.VK_DOWN):
                    y += 10;
                    if ((y+imgHeight) > height)
                    {
                        y = (height - imgHeight);
                    }
                break;
                
                case (KeyEvent.VK_LEFT):
                    x -= 10;
                    if (x < 0)
                    {
                        x = 0;
                    }
                break;
                
                case (KeyEvent.VK_RIGHT):
                    x += 10;
                    if ((x+imgWidth) > width)
                    {
                        x = (width - imgWidth);
                    }
                break;     
            }
            repaint();
        }
    P.S. siate buoni....
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

  2. #2
    Il problema e' che devi innescare il movimento quando il tasto viene premuto la prima volta e disinnescarlo quando viene sollevato.
    Dico la prima volta, perche' il tuo sistema di movimento si basa sulla ripetizione automatica dei tasti.
    Quindi per esempio, il tuo programma non funziona sul mio PC dove la tengo disabilitata.
    Cerca nel forum perche' postai del codice per risolvere esattamente questo problema.
    Cmq la soluzione che scelsi era di usare un timer (javax.swing.Timer) che magari per te non e' la migliore, pero' puo' darti un'idea su come agire.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente di HTML.it L'avatar di mhidy
    Registrato dal
    Jan 2005
    Messaggi
    28
    Grazie.. caso mai ti faccio sapere
    ciao
    Fa marcia indietro e uccide il cane, fa marcia avanti e uccide il gatto (Corriere della Sera, 1992)
    Si è spento l'uomo che si è dato fuoco (Giornale di Sicilia, 1998)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.