[ divac @ 12.11.2006. 00:31 ] @
Pozdrav svima !!!

Problem je sledeci... Napravio sam igricu Space Invaders, koja lepo radi, medjutim, napravio sam novu formu na kojoj sam postavio jedan JButton kojim hocu da aktiviram igricu. E problem je u tome sto u tom slucaju igrica ne reaguje na komande sa tastature, ne prima KeyEvents. Postavio sam u konstruktoru igrice SetFocus(true), pa requestFocus(), i ne radi... A kad je aktiviram u konstruktoru nove forme, bez JButtona, sve radi kako treba... Da li neko zna sta je caka ???

Mogu postaviti i kod ovde da vidite...

Pozz
Divac
[ Java Beograd @ 12.11.2006. 09:40 ] @
U momentu kad kliknes na dugme, canvas (tj, komponenta koja sluca key evente) izgubi focus, jer ga button preuzme. Logicno je onda da KeyListener ne hvata dogadjaje. Focus moras da prebacis sa dugmeta.
[ divac @ 12.11.2006. 11:10 ] @
Samo da malo pojasnim, znaci u actionListeneru dugmeta je konstruktor igrice, znaci igrica klikom na dugme se pojavljuje u svom novom prozoru... Poslacu kod malo kasnije, samo da izbacim nepotrebne slicice...

Evo i fajla...

[Ovu poruku je menjao divac dana 12.11.2006. u 16:31 GMT+1]
[ Java Beograd @ 12.11.2006. 20:42 ] @
Ako si ono sam napravio - svaka ti čast ! A evo ovako treba da izgleda kod da bi sve bilo ok.

Ono oko hvatanja eventa na dugmetu ne mora u posebnoj, imenovanoj klasi, ali to je bilo jače od mene. :) Ne volim In-Line klase pa to ti je, kao što ne volim ni promenljive sa jednim slovom !

Dakle, poenta je u posebnoj niti.

Code:

public class Form1 extends JFrame
{
    Invaders inv;
    
    public Form1()
    {
        super("Proba");
        setBounds(100,100,200,200);
        JPanel pan = new JPanel();
        add(pan);
        JButton but = new JButton("Klik");
        pan.add(but);
        but.addActionListener(new ButtonEventHandler());
    }
    
    class ButtonEventHandler implements ActionListener {
         public void actionPerformed(ActionEvent d){
             new StartingGameThread().start();
         }
    }

    class StartingGameThread extends Thread {
        public void run() {
               inv = new Invaders("SP");
               inv.game();
        }
        
    }
        
    public static void main(String[] args) {
        new Form1().setVisible(true);
    }
}


[ divac @ 12.11.2006. 21:20 ] @
Hvala care, radi...

Znao sam da je neka sitnica u pitanju, no dobro, jos treba uciti... Inace ovo sam uradio poodavno, koristeci malo svoje znanje, malo internet, medjutim sad pravim 3D igricu (neko ce reci sto bas u javi 3D igricu, al u pitanju je diplomski) u kojoj space invaders treba da bude mini igra, i da se pali u odredjenom trenutku, sa odredjenim likovima (ne samo ovi momci iz south parka :)... zato mi je ovo trebalo...

Hvala jos jednom !!!