javafx rotatetransition外观不同

时间:2015-06-22 12:17:00

标签: java windows javafx

我正在开发一个应用程序,其中使用了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();

为什么会出现这种情况?

1 个答案:

答案 0 :(得分:0)

原来是支持3d图形。要解决这个问题,我只是稍微改了一下:

SequentialTransition transition;
  if(Platform.isSupported(ConditionalFeature.SCENE3D))   
     transition = new SequentialTransition(parallel, pause, rotator);
  else
     transition = new SequentialTransition(parallel);