我为3D渲染编写了一个简单的测试应用程序。它具有3D子场景中的旋转盒。为了使一切尽可能简单,我使用eclipse的新项目向导创建了一个新的单个Gluon Mobile视图项目(无FXML)。然后我将BasicView
构造函数从默认值更改为:
public BasicView(String name) {
super(name);
Box box = new Box();
box.setMaterial(new PhongMaterial(Color.GREEN));
RotateTransition rt = new RotateTransition(Duration.seconds(3), box);
rt.setAxis(new Point3D(1, 1, 1));
rt.setByAngle(120);
rt.setCycleCount(Animation.INDEFINITE);
rt.setInterpolator(Interpolator.LINEAR);
rt.play();
Group controls = new Group(box);
SubScene scene = new SubScene(controls, 0, 0, true, SceneAntialiasing.BALANCED);
PerspectiveCamera camera = new PerspectiveCamera(true);
camera.setTranslateZ(-20);
scene.setCamera(camera);
scene.widthProperty().bind(widthProperty());
scene.heightProperty().bind(heightProperty());
setCenter(scene);
}
所以我没有上面的标签和按钮。
这适用于Android和Windows,但在Android上我在框中的旋转期间会得到一个额外的黑色阴影,在那里似乎并不需要。如果你可以在两个操作系统上运行,你会看到我在说什么。
视频:
Android - https://youtu.be/zLKPuadNyis
Windows - https://youtu.be/tx6cIe74s1w
Xperia Z5 compact上的Android版本为6.0。
Gradle构建文件基本保持不变,只是我将版本更改为较新版本
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.3.2'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.gluonapplication.GluonApplication'
dependencies {
compile 'com.gluonhq:charm:4.2.0'
}
jfxmobile {
downConfig {
version = '3.1.0'
plugins 'display', 'lifecycle', 'statusbar', 'storage'
}
android {
compileSdkVersion = 23
manifest = 'src/android/AndroidManifest.xml'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
为什么会这样?它是JavaFXPorts的错误/问题吗?我可以跨平台获得一致的行为吗?
提交给JavaFx Ports