2017-11-01 3 views
2

私はScenenullを返しているので、(TornadoFXライブラリを使用して)Javafxで3D作業をしようとしていて、Sceneに私のPerspectiveCameraを設定できません。シーンがヌルなのはなぜですか?

私はそうのように私のプログラムを起動します。

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 Viewが初期化されたときに新しいSceneを作成するはずだったと私は考えていたので、なぜ私のSceneがnullであるのか分かりません。 Appクラスで手動で作成する必要がありますか?私はcreatePrimaryScene関数をオーバーライドして、HomeViewビュー内のinit関数にコードを移動しました。どちらも成功しませんでした。

アイデア?ここで髪を引き出します。

は(ああ、と無関係なノートで、私はちょうどTornadoFXである3Dサポートは、率直に言って、私の生涯を作るだろうと言うことができる?)シーンが装着されている前

+1

私たちは間違いなくTornadoFX用の3Dビルダーを作成します: –

答えて

3

ビューが作成され、シーンを操作するには、単にonDockをオーバーライドし、そこで操作を実行します。 onDockが呼び出されると、シーンが添付されます。

+0

完全に動作します、ありがとうございます! – shanling

+0

私の喜び! :) –

関連する問題