javaFx中的动画?
我最近用javaFx实现了流行游戏2048 这里我使用了一个4x4矩阵和一个4x4标签数组(放置在网格窗格上)&根据输入更新矩阵上的值,同时更新标签上的值。 结果很好 但是,由于没有动画,因此很难跟踪按键后所做的所有更改 我查看了javafx的动画库,但找不到任何方法来操纵标签以获得动画 我想知道我在这里有哪些选择,以及如何制作动画。 动画可以是任何让眼睛更容易跟随变化的东西javaFx中的动画?,java,javafx,javafx-2,javafx-8,scenebuilder,Java,Javafx,Javafx 2,Javafx 8,Scenebuilder,我最近用javaFx实现了流行游戏2048 这里我使用了一个4x4矩阵和一个4x4标签数组(放置在网格窗格上)&根据输入更新矩阵上的值,同时更新标签上的值。 结果很好 但是,由于没有动画,因此很难跟踪按键后所做的所有更改 我查看了javafx的动画库,但找不到任何方法来操纵标签以获得动画 我想知道我在这里有哪些选择,以及如何制作动画。 动画可以是任何让眼睛更容易跟随变化的东西 这里有一些东西可以让你开始。可以在x或y方向上平移节点(本例中为标签)。有一个内置的 import javafx.ani
这里有一些东西可以让你开始。可以在x或y方向上平移节点(本例中为标签)。有一个内置的
import javafx.animation.Animation;
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class GridPaneAnimate extends Application {
@Override
public void start(Stage stage) {
GridPane gp = new GridPane();
gp.setGridLinesVisible(true);
gp.setHgap(5);gp.setVgap(5);
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
Label l = new Label(i+","+j);
gp.add(l, i, j);
}
}
Scene scene = new Scene(gp);
stage.setScene(scene);
stage.show();
for (int i = 1; i < gp.getChildren().size(); i++){
TranslateTransition tt = new TranslateTransition(Duration.millis(2000), gp.getChildren().get(i));
tt.setByX(i%2 == 0 ? -25 : 25);
tt.setByY(i%2 == 0 ? -25 : 25);
tt.setCycleCount(Animation.INDEFINITE);//set to 1
tt.setAutoReverse(true); //dont need this
tt.play();
}
}
public static void main(String[] args) {
launch(args);
}
}
导入javafx.animation.animation;
导入javafx.animation.TranslateTransition;
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.control.Label;
导入javafx.scene.layout.GridPane;
导入javafx.stage.stage;
导入javafx.util.Duration;
公共类GridPaneAnimate扩展了应用程序{
@凌驾
公众假期开始(阶段){
GridPane gp=新的GridPane();
gp.setGridLinesVisible(真);
设置间隙总成(5);设置间隙总成(5);
对于(int i=0;i<4;i++){
对于(int j=0;j<4;j++){
标签l=新标签(i+“,”+j);
加总成(l,i,j);
}
}
场景=新场景(gp);
舞台场景;
stage.show();
对于(int i=1;i
当然,在平移节点后,将其设置为正确的行/列位置,并将“平移”设置回0