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()); 

한 쓰기 -와 - 잊지 쉬운 방법으로 청소 및 도면을 결합하는 것입니다의 clearRect 방법을 화면에 그릴 할 때마다 호출 할 필요가 자신을 유지하기 위해 하나의 방법. 심지어 다음 코드와 같이 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())); 
    //... 
    } 
}