Graphics2D パラメータを受け取るこのメソッド paint() があります。奇妙なことに、System.out.println が存在しない限り (以下のブロックでコメントアウトしています)、キャンバスは何も描画しません。
public class Map{
public void paint(Graphics2D g){
//fill background to black
g.setColor(Color.black);
g.fillRect(0, 0, TILE_SIZE*WIDTH, TILE_SIZE*HEIGHT);
//draw the tiles and buildings
for(int i=0;i<WIDTH;i++){
for(int j=0;j<HEIGHT;j++){
if(map[j][i] == CLEAR){
//System.out.println("");
g.setColor(Color.gray);
g.fillRect(i*TILE_SIZE, j*TILE_SIZE, TILE_SIZE, TILE_SIZE);
g.setColor(Color.red);
g.drawRect(i*TILE_SIZE, j*TILE_SIZE, TILE_SIZE, TILE_SIZE);
}
}
}
}
}
ここでは、BufferStrategy を使用して Canvas に描画し、それを Frame に追加します。このメソッドはクラス Map にあり、BufferStrategy の getDrawGraphics() メソッドから Graphics2D が渡されます (多くの人がこのことを理解して、私が何をしているのかを理解してくれることを願っています)。
public class MapTest extends Canvas{
private Map map;
public MapTest(){
Frame frame = new Frame("MAP");
frame.add(this);
frame.setVisible(true);
createBufferStrategy(2);
strategy = getBufferStrategy();
//draw the map
Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
//g.translate(100, 100);
map.paint(g);
g.dispose();
strategy.show();
}
}
このコードは Canvas クラスからのものです。ご覧のとおり、paint() メソッドは Canvas クラス (私はこれを GameTest と名付けています) とは別のものです。したがって、println ステートメントをコメント アウトすると、キャンバスにグラフィックが表示されなくなります。それ以外の場合は正しく表示されます。誰でも私を助けることができますか?