Ich mache ein Multithread-Pacman-Spiel.Mehrere animierte JPanels - nur die letzte, die zu JFrame hinzugefügt wurde, zeigt
Es gibt eine PacmanController-Klasse, die JFrame erweitert, eine Maze-Klasse, die JPanel erweitert, eine Pacman-Klasse, die in einem eigenen Thread läuft und JPanel erweitert, und eine Ghost-Klasse, die in einem eigenen Thread läuft und JPanel erweitert. Jeder Thread (Pacman und jeder Ghost) zeichnet sich ständig neu auf und nennt auch labyrinth.repaint().
Wenn ich das Labyrinth zum Rahmen hinzufüge, zeigt es fein an, wenn ich dann pacman addiere, zeigt es noch an und belebt fein.
Wenn ich jedoch den Ghost nach Pacman zum Rahmen hinzufüge, erscheint der Geist und Pacman verschwindet. Wenn ich die Reihenfolge umstelle, in der Pacman und der Ghost hinzugefügt werden, ist das Gegenteil der Fall, d. H. Es wird immer nur einer von Pacman oder jeder Instanz von Ghost angezeigt - der zuletzt hinzugefügte.
ZB:
add(maze);
add(pacman);
add(ghostA);
Nur das Labyrinth und Ghosta erscheinen?
Ich weiß, dass dies etwas mit JFrames BorderLayout zu tun hat, d. H. Es kann nur eine Komponente zur mittleren Region hinzugefügt werden, aber ich weiß nicht, wie ich sie beheben kann. Ich habe versucht, Pacman und Geister zu EAST WEST usw. hinzuzufügen, aber das hat nicht funktioniert.
Ich habe auch versucht,
maze.add(pacman);
add(pacman); //etc
aber das hat nicht funktioniert entweder.
Sorry für die lange Post, jede Hilfe wird sehr geschätzt. Ich kann keinen Code posten, da der Code zu lang ist und sich auf viele Klassen verteilt.
Vielen Dank!
Viele Rezepte für Probleme in Swing aye :-) – Peter
Danke für die Antwort, aber dies ist für eine Zuordnung ; daher habe ich nicht wirklich Zeit, mein Programm neu zu gestalten - es ist insgesamt 2000 Zeilen lang. Was ich wirklich wissen möchte ist, kann ich es mit dem, was ich bisher gemacht habe, funktionieren lassen? Beide zeigen OK an, nicht gleichzeitig - also gibt es angesichts dessen, was ich beschrieben habe, eine schnelle Lösung? Prost – Rory
Hatte schon versucht, ohne Erfolg. Vergiss es, trotzdem danke. – Rory