为什么我的场景是空的?
我正在尝试使用Javafx(使用TornadoFX库)做一些3D工作,并且无法将SceneCamera设置为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 }
有什么我做错了吗? 我不知道为什么我的Scene
是空的,因为我认为TornadoFX View
应该在初始化时创建一个新的Scene
? 我是否需要在App类中手动创建它? 我尝试覆盖createPrimaryScene
函数,并且将代码移到HomeView
视图中的init
函数 – 都没有成功。
有任何想法吗? 拔出头发在这里。
(哦,在一个不相干的笔记上,我可以说,在TornadoFX中3D支持会坦白地说,使我的整个生活 ?)
视图是在场景附加之前创建的,所以要操纵场景,只需重写onDock
并在那里执行操作。 当onDock
被调用时,场景被附加。