2013-08-20 5 views
0

javafx에서 타임 라인 애니메이션을 그려야합니다. 여기서 생성 줄의 코드이다어닐을 한 창에서만 볼 수있게 만드는 방법은 무엇입니까? JavaFX

public Line getLine() { 

Point startPoint = FigureUtil.translateGeographicalToViewCoords(center.longitude, center.latitude, mapViewState); 
line = new Line(); 
line.setStartX(startPoint.x); 
line.setStartY(startPoint.y); 
line.setStrokeWidth(4); 

line.setStyle("-fx-stroke: rgba(37, 176, 79, 0.5);"); 
return line; 
} 

public void stop(){ 
timer.stop(); 
timeline.stop(); 
} 
private KeyFrame getFrame() { 
Duration duration = Duration.millis(60/speedOfRotating); 

EventHandler<ActionEvent> onFinished = new EventHandler<ActionEvent>() { 
    public void handle(ActionEvent t) { 
    LatLong latLong = LongitudeLatitudeUtil.getLatLongByDistanceAndAngle(center, time, size); 
    Point endPoint = FigureUtil.translateGeographicalToViewCoords(latLong.longitude, latLong.latitude, mapViewState); 
    line.setEndX(endPoint.x); 
    line.setEndY(endPoint.y); 
    time++; 
    } 
}; 
KeyFrame keyFrame = new KeyFrame(duration, onFinished); 
return keyFrame; 
} 

private void startTimer() { 
timer = new AnimationTimer() { 
    @Override 
    public void handle(long l) { 
    time++; 
    if (time > 360) { 
     time = 0; 
    } 
    } 
}; 
timer.start(); 
} 

public void start() { 
startTimer(); 
timeline = new Timeline(); 
timeline.setCycleCount(Timeline.INDEFINITE); 
timeline.setAutoReverse(true); 
// You can add a specific action when each frame is started. 

// timeline.getKeyFrames().remove(1); 
timeline.getKeyFrames().add(getFrame()); 
timeline.play(); 

} 

내가 이러한 문제점을 창으로 추가 : [1] http://img.image-storage.com/69224197/be380fee3e074.jpg. 선을 추가 한 창 밖으로 선을 표시해서는 안됩니다 (대시 선으로 구분).

답변

0

.

linesContainer.setClip(RectangleBuilder.create().width(linesContainer.getWidth()).height(linesContainer.getHeight()).build());

0

당신은 노드의 특정 영역을 마스크 클리핑을 사용할 수 있습니다 : 당신은 단순히 당신이 라인을 추가 할 컨테이너 노드 클립을 지정할 수 있습니다

Line line = LineBuilder.create().endX(250).endY(250).build(); 
// pane to clip 
FlowPane pane = FlowPaneBuilder.create().minHeight(200).minWidth(200).children(line).build(); 
// clipping shape 
Rectangle rect = RectangleBuilder.create().x(pane.getLayoutX()).y(pane.getLayoutY()).width(pane.getMinWidth()).height(pane.getMinHeight()).build(); 

pane.setClip(rect); 
관련 문제