我正在尝试使用Javafx(使用TornadoFX库)进行3D工作,并且在PerspectiveCamera
返回{{1}时无法将Scene
设置为Scene
}}
我这样启动我的程序:
null
然后在class ThreeDTest : App(HomeView::class, ThreeDStyles::class) {
override fun start(stage: Stage) {
super.start(stage)
stage.show()
stage.scene.fill = Color.BLACK
val primaryScreenBounds = Screen.getPrimary().visualBounds
stage.maxWidth = 1920.0
stage.maxHeight = 1080.0
stage.minWidth = 1920.0
stage.minHeight = 1080.0
}
}
课程中我有这个:
HomeView
我有什么问题吗?我不知道为什么我的class HomeView : View() {
override val root = stackpane {
val axisGroup = Xform()
val world = Xform()
val camera = PerspectiveCamera(true)
val cameraXform = Xform()
val cameraXform2 = Xform()
val cameraXform3 = Xform()
val cameraInitialDistance = -450.0
val cameraInitialXAngle = 70.0
val cameraInitialYAngle = 320.0
val cameraNearClip = 0.1
val cameraFarClip = 10000.0
//just a builder class to add properties to the camera
buildCamera(this, cameraXform, cameraXform2, cameraXform3, camera, cameraNearClip, cameraFarClip, cameraInitialDistance,
cameraInitialYAngle, cameraInitialXAngle)
buildAxes(axisGroup, world)
println(scene)
//returns null
scene.camera = camera
//this does not work as scene is null
}
为空,因为我认为TornadoFX Scene
在初始化时应该创建一个新的View
?我是否需要在App类中手动创建它?我尝试重写Scene
函数,并将我的代码移到createPrimaryScene
视图中的init
函数 - 两者都没有成功。
有什么想法吗?在这里拉出头发。
(哦,在一个不相关的说明中,我可以说,在TornadoFX中获得3D支持会非常坦率地说,让我的整个生命?)
答案 0 :(得分:4)
在附加场景之前创建视图,因此要操纵场景,只需覆盖onDock
并在那里执行操作。调用onDock
时,会附加场景。