【问题标题】:Java - Adding images in full screen mode (Developing games in java example - Book)Java - 在全屏模式下添加图像(在 Java 示例中开发游戏 - 书籍)
【发布时间】:2011-12-29 10:38:46
【问题描述】:

我正在尝试阅读 David Brackeen 撰写的名为“用 Java 开发游戏”的书。在第 2 章中,有一个如何将图像添加到全屏应用程序的示例。他所做的是他添加了一个 JPG 背景图像,然后添加了 4 个 PNG 图像。我试着像往常一样做,自己看书写代码。没用。

我搜索了代码中的错误,更改了一些东西,尝试了不同的东西,但没有成功。然后我尝试使用他自己的代码,我从他的网站下载的。那也没用..我试图找到另一种添加图像的方法,现在我整个上午都在搜索..我似乎无法找到一种方法以任何其他方式将图像实现到这个类中就是写在这本书里的。。我的Java编程水平还不够高。

我尝试尽可能地理解书中写的代码,我认为我理解了大部分内容。我只是不明白为什么图像没有显示出来。如果有人可以在正确的轨道上帮助我,我将不胜感激。这是从作者网站下载的图像加载文件的代码(我修改了括号和一些空格,以便于阅读)

import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class ImageTest extends JFrame
{
public static void main(String[] args)
{
    DisplayMode displayMode;

    if (args.length == 3)
    {
        displayMode = new DisplayMode(
            Integer.parseInt(args[0]),
            Integer.parseInt(args[1]),
            Integer.parseInt(args[2]),
            DisplayMode.REFRESH_RATE_UNKNOWN);
    }
    else
    {
        displayMode = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
    }

    ImageTest test = new ImageTest();
    test.run(displayMode);
}

private static final int FONT_SIZE = 24;
private static final long DEMO_TIME = 10000;

private SimpleScreenManager screen;
private Image bgImage;
private Image opaqueImage;
private Image transparentImage;
private Image translucentImage;
private Image antiAliasedImage;
private boolean imagesLoaded;

public void run(DisplayMode displayMode)
{
    setBackground(Color.blue);
    setForeground(Color.white);
    setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
    imagesLoaded = false;

    screen = new SimpleScreenManager();

    try
    {
        screen.setFullScreen(displayMode, this);
        loadImages();
        try
        {
            Thread.sleep(DEMO_TIME);
        }
        catch (InterruptedException ex){}
    }
    finally
    {
        screen.restoreScreen();
    }
}


public void loadImages()
{
    bgImage = loadImage("images/background.jpg");
    opaqueImage = loadImage("images/opaque.png");
    transparentImage = loadImage("images/transparent.png");
    translucentImage = loadImage("images/translucent.png");
    antiAliasedImage = loadImage("images/antialiased.png");
    imagesLoaded = true;
    // signal to AWT to repaint this window
    repaint();
}


private Image loadImage(String fileName)
{
    return new ImageIcon(fileName).getImage();
}


public void paint(Graphics g)
{
    // set text anti-aliasing
    if (g instanceof Graphics2D)
    {
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(
            RenderingHints.KEY_TEXT_ANTIALIASING,
            RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    }

    // draw images
    if (imagesLoaded)
    {
        g.drawImage(bgImage, 0, 0, null);
        drawImage(g, opaqueImage, 0, 0, "Opaque");
        drawImage(g, transparentImage, 320, 0, "Transparent");
        drawImage(g, translucentImage, 0, 300, "Translucent");
        drawImage(g, antiAliasedImage, 320, 300, "Translucent (Anti-Aliased)");
    }
    else
    {
        g.drawString("Loading Images...", 5, FONT_SIZE);
    }
}


public void drawImage(Graphics g, Image image, int x, int y, String caption)
{
    g.drawImage(image, x, y, null);
    g.drawString(caption, x + 5, y + FONT_SIZE + image.getHeight(null));
}

}

【问题讨论】:

    标签: java image swing fullscreen


    【解决方案1】:

    看着它......我没有看到任何使 JFrame 可见的东西。

    想添加“setVisible(true);”在“screen.setFullScreen(displayMode, this);”之前在第 48 行?

    如果这不起作用 - 你能确认你正在使用这个 SimpleScreenManager 吗? http://www.it.uu.se/edu/course/homepage/games/JavaIntro/SimpleScreenManager.java

    【讨论】:

    • 添加“setVisible(true);”在“screen.setFullScreen(displayMode, this);”之前移除全屏并使其成为屏幕左上角的一个小窗口,/:是的,这就是我正在使用的!感谢您的回复! (:
    【解决方案2】:

    感谢 Java 论坛的版主,我发现问题出在图像路径上。当我添加完整路径而不是仅使用“文件夹名称/图像名称”时,它起作用了。奇怪,但它现在可以工作了!

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多