Мне нужно иметь массив фонов? - PullRequest
0 голосов
/ 07 октября 2011

В моем боковом скроллере я хочу иметь 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 (), который loads background[stage] and if stage > 2 stage = 0

1 Ответ

1 голос
/ 07 октября 2011

одно возможное решение:

сделать "фон" массивом из 3 элементов

Image[] background = new Image[3];

загрузить три фоновых изображения по одному в фон [0], фон [1]и background [2].

создайте новую приватную переменную, возможно, называемую stage, и увеличивайте при продвижении:

private int stage = 0;

public void nextStage() { stage++; }

наконец, в paint (), нарисуйте желаемый фон, согласнок значению стадии:

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