-1
私はバッファリングされたイメージを使用してスプライトシートからスプライトをレンダリングしようとしていますが、イメージを呼び出してもコードが機能しないクラスから?バッファリングされたイメージを使用してスプライトをレンダリングする
コード:
package com.game.src.main;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class Game extends Canvas implements Runnable {
private BufferedImage spriteSheet = null;
boolean sprite = false;
private BufferedImage sprite;
public void init(){
BufferedImageLoader loader = new BufferedImageLoader();
try{
spriteSheet = loader.loadImage("/astronaut_sprite1.png");
}catch(IOException e){
e.printStackTrace();
}
}
private void render(){
BufferStrategy bs = this.getBufferStrategy();
if(bs == null){
createBufferStrategy(3);
return;
}
if(sprite == true){
g.drawImage(sprite, 0, 0, getWidth(), getHeight(), this);
System.out.println("True");
}
g.dispose();
bs.show();
}
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if(key == KeyEvent.VK_1){
sprite = true;
}
}
public static void main(String args[]){
Game game = new Game();
public BufferedImage getSpriteSheet(){
return spriteSheet;
}
}
私は(スプライト)を呼んでいるクラスがある:
package com.game.src.main;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
public class sprite{
private double x;
private double y;
private BufferedImage sprite;
public sprite(x, y, Game game){
SpriteSheet ss = new SpriteSheet(game.getSpriteSheet());
sprite = ss.grabImage(3, 3, 32, 32);
}
BufferedImageLoader:
package com.game.src.main;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class BufferedImageLoader {
private BufferedImage image;
public BufferedImage loadImage(String path) throws IOException{
image = ImageIO.read(getClass().getResourceAsStream(path));
return image;
}
}
は私の更新を確認してください。あなたはBufferedImageLoaderクラスのコードを提供していませんでしたが、ImageIO.readが正常に動作することがわかりました。 –
申し訳ありませんが、私はBufferedImageLoaderクラスを投稿しましたが、クラス内に既にImageIO.readが使用されています。私の質問は、私がそれを使用しても、私がスプライトシートから欲しいスプライトを呼び出すためにどのように使用するのですか? – LilKittens
絶対イメージパスを指定する代わりにgetResourceAsStream(path)を使用しているので、リソースフォルダが正しいパスにあることを確認する必要があります。更新された答えをもう一度確認してください。 –