Avatar billede aligncenter Nybegynder
19. maj 2001 - 10:12 Der er 3 kommentarer og
1 løsning

Listener type

jeg vil lave et spil hvor hvis to objekter kolliderer skal der udføres en handling.

denne handling skal trigges af en listener

jeg har prøvet at bruge componentListener, men dens ComponentHidden virker ikke , er der andre listener typer som er brugbare, til at måle om der en kolission
Avatar billede isis Nybegynder
19. maj 2001 - 13:03 #1
jeg ved heller ikke lige hvilken type der er bedst egnet, men du kan læse om nogle af dem her: http://search.java.sun.com/Search/java?col=jsun&pw=100%25&ws=0&nh=10&qt=listener
du skal muligvis have fat i noget ala objectChangeListener
Avatar billede logical Nybegynder
19. maj 2001 - 14:55 #2
ComponentListener er ok, hvis du flytter din component, men så er ComponentMoved måske passende.

Det gav mig lige anledning til at lave en lille demonstration af component-collision:

    JFrame f = new JFrame(\"Hej\");
    f.addWindowListener(new dk.logical.gui.CloseAdapter());

    f.getContentPane().setLayout(null);
    JLabel l = new JLabel(\"Jeg flytter mig\");
    l.setBounds(10,10,200,20);
    f.getContentPane().add(l);

    JLabel badArea = new JLabel(\"Herned til\");
    final Rectangle hitZone = new Rectangle(150,150,200,20);
    badArea.setBounds(hitZone);
    f.getContentPane().add(badArea);
   
    l.addComponentListener(new ComponentAdapter(){
        public void componentMoved(ComponentEvent e) {
            Component c = (Component) e.getSource();
            Rectangle r = c.getBounds();
            if (r.intersects(hitZone))
                System.out.println(\"I\'m in\");
           
        }
    });
    f.setSize(300,300);
    f.setVisible(true);

    for (int i = 0 ; i < 100 ; i++) {
        Rectangle b = l.getBounds();
        b.x += 2;
        b.y+=3;
        l.setBounds(b);
        Thread.sleep(1000);
    }
Avatar billede aligncenter Nybegynder
19. maj 2001 - 17:42 #3
jeg har prøvet at bruge getComponentAt(int,int). men den leverer altid den parent ramme tilbage og ikke de canvas subcomponenter jeg var interesseret
i at få fat i.
Avatar billede logical Nybegynder
19. maj 2001 - 22:39 #4
Gem dine bounds på dine komponenter et sted,f.eks. et Rectangle[],  og lad være med at prøve at finde dine komponenter dynamisk. Du spilder for meget tid.

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester