【发布时间】:2009-04-17 17:48:12
【问题描述】:
我正在制作一个多线程吃豆人游戏。
有一个扩展 JFrame 的 PacmanController 类,一个扩展 JPanel 的 Maze 类,一个在自己的线程中运行并扩展 JPanel 的 Pacman 类,以及一个在自己的线程中运行并扩展 JPanel 的 Ghost 类。每个线程(pacman 和每个 Ghost)都会不断地重新绘制自己并调用 maze.repaint()。
当我将迷宫添加到框架中时,它显示正常,如果我再添加 pacman,它仍然可以正常显示和动画。
但是,当我在 pacman 之后将 Ghost 添加到框架中时,ghost 出现而 pacman 消失。如果我切换添加 pacman 和 ghost 的顺序,则相反,即只显示 pacman 或每个 ghost 实例中的一个 - 最后添加的那个。
例如:
add(maze);
add(pacman);
add(ghostA);
只有迷宫和ghostA出现?
我意识到这与 JFrames BorderLayout 有关,即只能将一个组件添加到中心区域,但不知道如何修复它。我曾尝试将 pacman 和 ghosts 添加到 EAST WEST 等,但这没有奏效。
我也试过
maze.add(pacman);
add(pacman); //etc
但这也没有用。
很抱歉,很长的帖子,非常感谢任何帮助。我无法发布任何代码,因为代码太长并且分布在许多类中。
非常感谢!
【问题讨论】:
标签: java multithreading swing