我正在开发一个应用程序,其中使用了rotatetransition,以及其他转换。在我的本地开发机器上,它看起来像预期的那样。我已经在几个虚拟机上测试了这个:Windows XP,Windows 2003,Windows 7,Windows Server 2008和Windows 8.除了XP和7之外,当我的本地机器是7时,它看起来很正常。我正在使用相同的jre for all虚拟机和本地机器,8.25。在XP和7 VM上,执行旋转转换时,正在旋转的节点不会旋转,而是移动到父节点的左上角。我在这些机器上检查了javafx版本,它是jre版本。过渡的代码非常简单:
TranslateTransition translate =
new TranslateTransition(Duration.millis(300), tileButton);
translate.setByX(x);
translate.setByY(y);
ScaleTransition scale =
new ScaleTransition(Duration.millis(300), tileButton);
scale.setByX(scaleX);
scale.setByY(scaleY);
scale.autoReverseProperty();
PauseTransition pause = new PauseTransition(Duration.millis(200));
RotateTransition rotator =
new RotateTransition(Duration.millis(600), tileButton);
rotator.setAxis(Rotate.Y_AXIS);
rotator.setFromAngle(0);
rotator.setToAngle(180);
rotator.setInterpolator(Interpolator.LINEAR);
rotator.setCycleCount(1);
ParallelTransition parallel = new ParallelTransition(translate, scale);
SequentialTransition transition =
new SequentialTransition(parallel, pause, rotator);
transition.play();
为什么会出现这种情况?
答案 0 :(得分:0)
原来是支持3d图形。要解决这个问题,我只是稍微改了一下:
SequentialTransition transition;
if(Platform.isSupported(ConditionalFeature.SCENE3D))
transition = new SequentialTransition(parallel, pause, rotator);
else
transition = new SequentialTransition(parallel);