Javafx-嵌入式设备上的文本动画不平滑
我们目前正在进行一个JavaFX项目,我们需要以不同的速度实现从左到右的文本动画。应用程序的执行环境是一个嵌入式设备——棒形PC 我们使用了Translate Transition API来实现动画效果,但我们在其中面临平滑问题。与笔记本电脑/台式机中的动画相比,文本移动时会出现抖动,移动速度较慢Javafx-嵌入式设备上的文本动画不平滑,java,javafx,embedded,javafx-8,transition,Java,Javafx,Embedded,Javafx 8,Transition,我们目前正在进行一个JavaFX项目,我们需要以不同的速度实现从左到右的文本动画。应用程序的执行环境是一个嵌入式设备——棒形PC 我们使用了Translate Transition API来实现动画效果,但我们在其中面临平滑问题。与笔记本电脑/台式机中的动画相比,文本移动时会出现抖动,移动速度较慢 package application; import javafx.animation.Interpolator; import javafx.animation.Timeline; import
package application;
import javafx.animation.Interpolator;
import javafx.animation.Timeline;
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.CacheHint;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
public class SampleAnimationTest extends Application {
// private final Logger logger = Logger.getLogger("genLog");
@Override
public void start(Stage primaryStage) throws Exception {
StackPane group = new StackPane();
Rectangle rectangle = new Rectangle();
rectangle.setHeight(1080);
rectangle.setWidth(1920);
rectangle.setFill(Color.WHITE);
rectangle.setTranslateX(0);
rectangle.setTranslateY(0);
rectangle.setCache(true);
rectangle.setCacheHint(CacheHint.SPEED);
Text text = new Text("THIS IS A LONG TEXT FOR TESTING TEXT ANIMATION IN JAVAFX");
text.setFill(Color.BLACK);
text.setUnderline(false);
text.setFont(Font.font("Meiryo", 509.3899));
text.setTextAlignment(TextAlignment.CENTER);
text.setCache(true);
text.setCacheHint(CacheHint.SPEED);
TranslateTransition tt = new TranslateTransition();
tt.setNode(text);
Rectangle rClip = new Rectangle();
rClip.setWidth(rectangle.getWidth());
rClip.setHeight(rectangle.getHeight());
rClip.translateXProperty().bind(rectangle.translateXProperty());
group.getChildren().add(rectangle);
group.getChildren().add(text);
group.setClip(rClip);
Group group2 = new Group();
group2.getChildren().add(group);
Scene scene = new Scene(group2, 1920, 1080);
primaryStage.setMaximized(true);
primaryStage.setTitle("Decorations Example");
primaryStage.setScene(scene);
primaryStage.show();
tt.fromXProperty().bind(rectangle.translateXProperty().add(rectangle.getLayoutBounds().getWidth()));
tt.toXProperty().bind(rectangle.translateXProperty().subtract(text.getLayoutBounds().getWidth()));
tt.setRate(0.077364);
tt.setInterpolator(Interpolator.LINEAR);
tt.setCycleCount(Timeline.INDEFINITE);
tt.playFromStart();
}
public static void main(String[] args) {
launch(args);
}
}
这可能只是因为嵌入式设备不够快。它使用的是什么硬件,运行的是什么操作系统?它是一台带有2gb内存和atom z3处理器的Intel Stick PC。操作系统呢?窗户?什么版本?Linux?使用预装操作系统Windows 10的发行版、内核版本等