为什么我的场景为空?

时间:2017-11-01 01:02:08

标签: javafx kotlin tornadofx

我正在尝试使用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支持会非常坦率地说,让我的整个生命?)

1 个答案:

答案 0 :(得分:4)

在附加场景之前创建视图,因此要操纵场景,只需覆盖onDock并在那里执行操作。调用onDock时,会附加场景。