2

我正在尝试为我的游戏绘制一个欢迎屏幕,但仅限于游戏加载时。我不希望它在游戏期间每次都重新绘制。

所以我这样做了(其中 isStart 被实例化为真):

public myClass(String name){
    setSize(800, 800);
    setVisible(true);
    setResizable(false);
    runGame()
}

public void paint(Graphics g) {
    if(nowStarting)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}

问题是图像会弹出一秒钟然后消失?奇怪的是,当我省略 if 语句/isStart 条件时,它会起作用。这有什么问题?

4

3 回答 3

1

我猜你没有逐字复制代码,上面的代码有错误。如果您的代码是我认为的...

public void paint(Graphics g) {
    if(isStart)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}

然后在开始时它会绘制你的启动画面。但是,因为您将 isStart 设置为 false,所以下次调用 paint 时,将不再绘制图像。每当操作系统告诉屏幕它需要刷新时(以及当你用重绘强制它时),都会调用paint方法。

解决这个问题的方法是,当游戏完成加载时,在应用程序中将 isStart 设置为 false,然后调用 repaint。

于 2010-09-24T10:18:31.200 回答
0

I guess your newStarting boolean gets changed to false as soon as the panel is painted.

于 2010-09-24T09:55:09.250 回答
0

它立即消失的原因是 Swing 框架触发的重绘。另外,您已经在重写的 paint() 方法中编写了欢迎屏幕的代码。

有关如何触发启动窗口的详细说明,请参阅此链接。Java 1.6 中还有一个SplashScreen

于 2010-09-24T09:59:44.190 回答