2017-01-28 8 views
1

私は単純なアニメーションメニューを画面の周りに跳ね返っているようにしようとしていますが、画像はいつもどこでも移動しています。JavaFx画像のスムージングキャンバスを停止する

public void handle(long now) { 
     // TODO Auto-generated method stub 
     boolean intersectFlag = false; 
     for(Letter l : letters){ 
      gameMenuGraphicsContext.drawImage(l.letterImage, l.letterRectangle.getX(), l.letterRectangle.getY()); 
      l.moveSimple(); 
     }  
    }}; 

これをやめる方法はありますか?

答えて

0

あなたが書いている紙としてCanvasを考えてみましょう。あなたが何かを明示的に消去しなければ、あなたがこれまでに描いたことがすべて見えるでしょう。実際には、キャンバスを使用するという決断を再考する必要があります。この種のアニメーションにはあまり適していません。

0

mipaが述べているように、描画された画像は決して消去されないという問題があります。あなたのキャンバスを消去するには、使用:

graphicsContext.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); 

は、1つの書き込み - と - 忘れ簡単な方法にクリアして描画を組み合わせることで、clearRect方法あなたが画面上に描画するたびにコールすることから自分を保つために1つの方法。次のコードのように、λ式を使用してcanvasを描画することもできます。

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

public void handle(long now) { 
    //... 
    for(Letter l : letters) { 
    clearAndDraw(graphicsContext, gc -> gc.drawImage(l.letterImage, l.letterRectangle.getX(), l.letterRectangle.getY())); 
    //... 
    } 
} 
関連する問題