完全な解決策を見つけるためにオンラインで探していましたが、今のところ一緒に収まらない部分しか見つけることができません。アニメーションと表示用のスプライトシートのサブ画像を分離する
イメージファイルを見て、ファイルをループしてスプライトを分離して保存できるプログラムを探しています。その後、私はそれを表示することができるようにそのスプライト情報に再アクセスする方法が必要ですが、自分の数式に基づいてタイルを表示できるようにしたいと思います。小さな地形のタイルで高度な戦争のようなゲームを考えてみましょう。これらのタイルを半無作為に表示できるようにしたいのですが、自分のパラメータ内に表示することができます。
私はまた、上記の画像と同じサイズのスプライトを持つ別の画像ファイルをロードすることができますが、これらの画像はアニメーションに使用することができます。
私は64x64ピクセルスプライトの束を持つ2スプライトシートを持っています。画像ファイルの1つはすべて私の地形タイルです。もう一つは私のユニットタイルです。スプライトを読んで、私が好きなように表示できるようにしたい。
私の人生の中では、これをどのように行うのかわかりません。私はSubimagingとdrawImageを調べましたが、情報を適切に保存または再表示することはできません。
ありがとうございました。
編集:私は自分のために、そして他の人のために私の質問を単純化しました。
次のコードはなぜ機能しませんか?
package animation;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class AnimTest
{
public static void main(String[] args)
{
AnimTest test = new AnimTest();
test.go();
}
public void go()
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyDrawP drawP = new MyDrawP();
frame.getContentPane().add(drawP);
frame.setSize(500,500);
frame.setVisible(true);
}
}
class MyDrawP extends JPanel
{
public void drawSprite(Graphics g)
{
try {
BufferedImage bigImg = ImageIO.read(new File("C:/Users/scott/Desktop/Personal Work/Pixel Art/terrain.png"));
final int width = 64;
final int height = 64;
int x = 0;
int y = 0;
bigImg.getSubimage(x, y, width, height);
g.drawImage(bigImg, 5, 5, this);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ごめんなさい、コードブロックを適切にフォーマットする方法がわかりません。
これでMyDrawPクラスは自分のファイルを見て、0,0から始まる64x64の部分をつかんで保存し、それを保存してフレームに追加します。私はかなり問題は、drawSpriteメソッドは呼び出されないことですが、いつ呼び出すべきかわかりません。何か他のものがないかどうかわかりません。
また、上記のコードはなぜ機能しませんか?
おかげ
http://docs.oracle.com/javase/tutorial/uiswing/painting/step2.htmlを見る[ 'ImageLabelPanel'(http://stackoverflow.com/a/3078354/230513)有用であり得ます。 – trashgod
..あなたに質問がありますか? –