2017-01-30 2 views
1

複数の画像を画面に表示させようとしていますが、ArrayListの最後の画像のみが表示されます。私は、コードのclearAndDraw行を削除する場合ArrayList内の最後の要素のみを選択してArrayListをループする

for(Letter l : Letters) { 
    clearAndDraw(gameMenuGraphicsContext, gc -> 
     gc.drawImage(
      l.letterImage, 
      l.letterRectangle.getX(), 
      l.letterRectangle.getY() 
     ) 
    ); 
    gameMenuGraphicsContext.drawImage(
     l.letterImage, 
     l.letterRectangle.getX(), 
     l.letterRectangle.getY() 
    ); 
    l.move(); 
} 

private void clearAndDraw(GraphicsContext gc, Consumer<GraphicsContext> draw) { 
    gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight()); 
    draw.accept(gc); 
} 

、両方の長方形が表示されますが、彼らは画面を汚れ。

この問題の回避方法はありますか?

答えて

4

移動し、この行:

gc.clearRect(0, 0, gc.getCanvas().getWidth(), gc.getCanvas().getHeight()); 

あなたforループの前に。次に、すべての長方形を描画する前に画面をクリアします。

関連する問題