在我正在JavaFX中工作的游戏中,我有Label
s的卡片(DropShadow
s)。卡片可以移动,当它们移动时,阴影会留下一条微弱的痕迹。我已经尝试使用Node#setCache(boolean)
,这有效,但模糊了标签中的文字。
还有其他方法可以阻止DropShadow
离开小道吗?
这是一个带有结果的MCVE:
public class DropShadowTest extends Application {
@Override
public void start(final Stage stage) throws Exception {
final Label label = new Label("Hello, world!");
label.setBackground(new Background(new BackgroundFill(Color.LIGHTGRAY, new CornerRadii(10), Insets.EMPTY)));
label.setEffect(new DropShadow(3, 0, 1, Color.BLACK));
label.setMaxSize(100, 100);
label.setMinSize(100, 100);
stage.setScene(new Scene(new StackPane(label), 640, 480));
stage.show();
label.setOnMouseClicked(event -> {
final TranslateTransition anim = new TranslateTransition(Duration.seconds(1), label);
anim.setToX(Math.random() * 500 - 250);
anim.setToY(Math.random() * 300 - 150);
anim.play();
});
}
public static void main(final String[] args) {
Application.launch(args);
}
}
谢谢!
答案 0 :(得分:1)
尝试将{strong>缓存与Cache hints一起使用,例如,在开始设置动画之前,请将缓存提示设置为SPEED 完成动画后,切换回QUALITY,它将重新渲染您的节点(如摆动中的重绘())