19. maj 2001 - 10:12Der 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
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
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); }
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.
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.
Synes godt om
Ny brugerNybegynder
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.