私はちょっと立ち往生しています。私は、アニメーション化されたスプライトの 6x6 グリッドで構成される Java メモリ ゲームを作成しています (私の教授の要件)。私の試行では、スプライト アニメーションを持つ 1 つのコンポーネントしか表示できませんでした。私の他の試みは、 p1[i] = new Ash() を変更することでした。これにより、すべてのスプライトをグリッド内のすべてのコンポーネントにペイントできましたが、アニメーションはペイントできませんでした。グリッド内のすべてのコンポーネントが ANIMATED スプライトを持つようにする方法について、いくつかのアイデアをお願いしたいと思います。
私の主なクラス:
public class Main extends Component{
public static void main(String[] args) {
Ash ash = new Ash();
JFrame f = new JFrame("Game sample");
JPanel panel1 = new JPanel(new GridLayout(6,6,6,6));
JPanel[] p1 = new JPanel[36];
for(int i = 0;i < 36;i++){
p1[i] = new JPanel(new BorderLayout());
p1[i].add(ash);
panel1.add(p1[i]);
}
f.add(panel1,BorderLayout.CENTER);
f.setSize(500,500);
f.setVisible(true);
long start, trigger = 0, delay = 1000 / 8;
while(true) {
start = System.currentTimeMillis();
if(start > trigger) {
trigger = start + delay;
ash.repaint();
}
}
}
}
私のアッシュクラス:
public class Ash extends JPanel{
BufferedImageLoader loader;
BufferedImage spriteSheet;
BufferedImage sprite, sprite2, sprite3, sprite4;
int step = 0, start = 0;
public Ash() {
loader = new BufferedImageLoader();
spriteSheet = null;
try{
spriteSheet = loader.loadImage("spritesheet.png");
}catch (IOException ex){
}
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
SpriteSheet ss = new SpriteSheet(spriteSheet);
sprite = ss.grabSprite(start + step, 0, 32, 50);
g2d.drawImage(sprite,0,10,null);
if(step == 96) {
step = 0;
} else {
step += 32;
}
}