リスト配列からJPanelにレンダリングしようとしています。独自の2Dレンダラーを作成しましたが、RenderAdd関数を使用してリストに追加しようとすると、追加されないか、リスト配列でリストを読み取れません...彼は次のようなコードです。それを開始します。
JFrame frame = new JFrame();
frame.setSize(900, 500);
frame.setVisible(true);
Render render = new Render(new RenderDimension(frame.getX(),frame.getY(),frame.getWidth(),frame.getHeight()), frame);
BufferedImage zombie = new ImageLoader().readImage("zombie");
BufferedImage player = new ImageLoader().readImage("player");
render.RenderAdd(new RenderImage(new RenderDimension(100, 100, player.getWidth(), player.getHeight()), player));
render.RenderAdd(new RenderImage(new RenderDimension(0, 0, zombie.getWidth(), zombie.getHeight()), zombie));
render.start();
render.RenderAdd(new RenderImage(new RenderDimension(200, 100, player.getWidth(), player.getHeight()), player));
'render'は、レンダリング部分のメインのRenderクラスです。次に、RenderAddは、オブジェクトのxとyであるRenderDimensionと、画像の幅と高さを持つRenderImageを追加します。次に、BufferedImageもパラメーターとして受け取ります。
ただし、プログラムを実行しようとすると、空白の画面が表示されます。
ここで、Renderクラスには、スレッドを拡張する別のクラスがあります。これは、フレームをパラメーターとして受け取り、コンテンツを削除してgetContentPane()へのペイントを開始するクラスです。この次のコードは、renderthreadクラスのpaintComponent()関数内にあります。残念ながら、何もペイントされませんが、それ自体を繰り返し印刷するSystem.out.print( "h")を試したため、プロセスは実行されます。
for (RenderImage r : render.getList()){
int x = r.getSize().getX();
int y = r.getSize().getY();
int wi = r.getSize().getWidth();
int hi = r.getSize().getHeight();
if (x + wi >= -1 && x + wi <= d.getWidth()){
if (y + hi >= -1 && y + hi <= d.getHeight()){
g.drawImage(r.getImage(), x, y, null);
}
}
}
frame.getContentPane().add(p);
frame.getContentPane().validate();
frame.getContentPane().repaint();
問題はリストが追加されないことだと思うので、ここにその部分があります。
List<RenderImage> render = new ArrayList<RenderImage>();
public List<RenderImage> getList(){
return render;
}
public void RenderAdd(RenderImage renders){
render.add(renders);
}