Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    25

    Gioco Java Applet

    salve, sono nuovo del forum. sto creando un gioco in java applet e sto gestendo l'animazione e soprattutto la grafica di esso tramite thread. non riesco però in alcun modo a gestire gli eventi da tastiera. ho provato ad includere od implementare la classe con keylistener e keyadapter, ho usato uno spezzone di codice che in java funziona ma non in applet. come posso ovviare a questo problema? vi ringrazio anticipatamente.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ciao e benvenuto. senza postare un po' di codice non ti possiamo aiutare: non serve che posti tutto, ma almeno le parti salienti
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    25
    Ho provato sia con il seguente codice, posto dentro l'init:
    addKeyListener(new KeyAdapter(){
    @Override
    public void keyPressed(KeyEvent e) {
    switch (e.getKeyCode()) {
    case KeyEvent.VK_DOWN:break;
    case KeyEvent.VK_UP:break;
    case KeyEvent.VK_LEFT:sx=true;break;
    case KeyEvent.VK_RIGHT:dx=true;break;
    }
    repaint();
    }
    @Override
    public void keyReleased(KeyEvent e) {
    switch (e.getKeyCode()) {
    case KeyEvent.VK_DOWN:break;
    case KeyEvent.VK_UP:break;
    case KeyEvent.VK_LEFT:sx=false;break;
    case KeyEvent.VK_RIGHT:dx=false;break;
    }
    repaint();
    }
    @Override
    public void keyTyped(KeyEvent e) {
    switch (e.getKeyCode()) {
    case KeyEvent.VK_DOWN:break;
    case KeyEvent.VK_UP:break;
    case KeyEvent.VK_LEFT:sx=true;break;
    case KeyEvent.VK_RIGHT:dx=true;break;
    }
    repaint();
    }
    });
    sia con:
    public boolean keyDown(Event e, int click){
    switch(click){
    case Event.RIGHT:dx=true;break;
    case Event.LEFT:sx=true;break;
    case Event.DOWN:break;
    case Event.UP:break;
    }
    repaint( );
    return true;
    }
    public boolean keyUp(Event e, int click){
    switch(click){
    case Event.RIGHT:dx=false;break;
    case Event.LEFT:sx=false;break;
    case Event.DOWN:break;
    case Event.UP:break;
    }
    repaint( );
    return true;
    }
    sia implementando con keylistener la classe, che già eredita dall'applet e che è implementata cn Runnable e ActionListener...spero di esserti stato d'aiuto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    a me questo funziona (l'ho provato sia con appletviewer che da browser):
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    /**
     *
     * @author Andrea
     */
    public class AppletKeyboard extends JApplet {
        
        private JLabel label; 
        
        private class MyKeyListener extends KeyAdapter {
            public void keyPressed (KeyEvent ke) {
                switch (ke.getKeyCode()) {                
                    case KeyEvent.VK_R :
                        label.setBackground(Color.red);
                        break;
                    case KeyEvent.VK_Y :
                        label.setBackground(Color.yellow);
                        break;
                    case KeyEvent.VK_G :
                        label.setBackground(Color.green);
                        break;
                }                        
            }
        }
        
        public void init() {
            label = new JLabel("Change My Color R,Y,G");
            label.setOpaque(true);
            this.getContentPane().add(label);
            this.addKeyListener(new MyKeyListener());
            this.setFocusable(true);        
        }    
        
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    25
    ho provato come hai detto tu ma addirittura non mi carica neanche l'applet..ho usato il tuo codice oppurtunamente modificato in questa maniera:
    codice:
    private class MyKeyListener extends KeyAdapter {
             public void keyPressed(KeyEvent ke){
                 switch (ke.getKeyCode()){
                     case KeyEvent.VK_LEFT:sxtrue();break;
                     case KeyEvent.VK_RIGHT:dxtrue();break;
                 }
                 repaint();
             }
             public void keyReleased(KeyEvent ke){
                 switch (ke.getKeyCode()){
                     case KeyEvent.VK_LEFT:sxfalse();break;
                     case KeyEvent.VK_RIGHT:dxfalse();break;
                 }
                 repaint();
             }
             public void keyTyped(KeyEvent ke){
                 switch (ke.getKeyCode()){
                     case KeyEvent.VK_LEFT:sxtrue();break;
                     case KeyEvent.VK_RIGHT:dxtrue();break;
                 }
                 repaint();
             }
    }
    public void init(){
            this.addKeyListener(new MyKeyListener());
            this.setFocusable(true);        
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    se non ti carica nemmeno l'applet -> conviene che controlli il log della VM e vedi che problema s'è generato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    25
    sai dirmi dove trovo il log della VM??

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    quando apri la pagina html con l'applet embeddata, non ti si aggiunge automaticamente una iconcina sulla barra delle applicazioni con il logo di java? Se non dovesse essere il caso, vai nel pannello di controllo (o equivalente), cerca Java e in "Avanzate" dovresti trovare "Console java". Lì hai 3 opzioni:
    Mostra console -> Ti apre direttamente la console con il log di tutto quanto avviene, errori/eccezioni incluse

    Nascondi console -> Ti aggiunge l'icona di cui sopra, sta a te clickarci sopra per aprire la console

    Non avviare console -> Non fa proprio niente. Pessima scelta in fase di progettazione e debug

    Alternativa, usa appletviewer: essendo lanciabile da riga di comando, gli errori ed eventuali output di controllo che potresti aver aggiunto sono mostrati nella stessa finestra da cui hai lanciato l'appletviewer
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    25
    mi sono appena accorto che avevo dimenticato di copiarmi il file .class relativo alla classe mykeylistener.adesso lo provo e ti faccio sapere.grazie tanto per la tua disponibilità

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    25
    Funziona!!!Yahoooooooooooooo!!!Grazie infinite...

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.