java - 我需要有一系列背景吗?

标签 java swing side-scroller

在我的横向卷轴游戏中,我想要 3 个不断循环的背景。每当您完成一个阶段时,它都会调用函数 nextStage() 将您发送到下一个背景。在类里面:

package com.erikbalen.game.rpg;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class World extends JPanel implements ActionListener{

/**
 * 
 */
private static final long serialVersionUID = 2834816426699432121L;
Player p1;
Image background;
Timer time;

public World() {
    p1 = new Dps();
    addKeyListener(new AL());
    setFocusable(true);
    ImageIcon icon = new ImageIcon("C:\\Program Files (x86)\\EriksRPG\\Images\\Backgrounds\\background.png");
    background = icon.getImage();
    time = new Timer(5, this);
    time.start();
}

public void actionPerformed(ActionEvent e) {
    p1.move();
    repaint();
}

public void paint(Graphics g) {
    super.paint(g);
    Graphics g2d = (Graphics2D) g;

    g2d.drawImage(background, 0, 0, null);
    g2d.drawImage(p1.getImage(), p1.getX(), p1.getY(), null);

}

private class AL extends KeyAdapter {
    public void keyReleased(KeyEvent e) {
        p1.keyReleased(e);
    }

    public void keyPressed(KeyEvent e) {
        p1.keyPressed(e);
    }       
    }       
}

基本上我想知道如何创建一个名为背景的图像数组,加载这三个文件,并创建一个名为 nextStage() 的方法,加载背景[stage]并且 if stage > 2 stage = 0

最佳答案

一种可能的解决方案:

将“背景”设为包含 3 个元素的数组

Image[] background = new Image[3];

将三张背景图像一次加载到background[0]、background[1]和background[2]中。

创建一个新的私有(private)变量,可能称为阶段,并在前进时递增:

private int stage = 0;

public void nextStage() { stage++; }

最后,在paint()中,根据stage的值,绘制出你想要的背景:

g2d.drawImage(background[stage % 3], 0, 0, null);

关于java - 我需要有一系列背景吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7683350/

相关文章:

java - 如果 Hibernate 数据库连接失败,捕获 Grails 中的启动异常

sprite-kit - 使用 SKTileMapNode 制作类似 Defender 的 "world"

iPhone iOS 是否有我可以看一看的开源横版卷轴游戏?

java.lang.OutOfMemoryError 无法创建新的 native 线程

java - 如何将播放器置于 libgDX 相机的中心

java - URISyntaxException 在 Weblogic 中部署 WAR 文件时出现非法字符

java - 我的 Java 应用程序中的两个类具有相同的限定名称

java - java.lang.Long 或 java.util.UUID 是安全的共享 secret 吗?

java - 如何使用 KeyListener 移动 JFrame 中的矩形?

java - 如何处理 java swing 组件事件而不创建一个困惑的类?