2016-07-26 3 views
1

私はコントロールとモデルを同じウィンドウ(ゲーム)に持つScalaFXアプリケーションで作業しています。残念ながら、モデルを追加すると、コントロールは重なり合わないにもかかわらずマウスイベントの受信を停止します。最小の作業例は次のようになります。Shape3Dも使用しているときにJavaFXコントロールがマウスイベントを受け取っていない

import scalafx.Includes._ 
import scalafx.application.JFXApp 
import scalafx.application.JFXApp.PrimaryStage 
import scalafx.scene._ 
import scalafx.scene.control._ 
import scalafx.scene.input.MouseEvent 
import scalafx.scene.layout._ 
import scalafx.scene.shape._ 

object GameWindow extends JFXApp { 
    stage = new PrimaryStage { 
    scene = new Scene(800, 600, true, SceneAntialiasing.Balanced) { 
     root = new VBox(
     new Button("Click me!") { 
      handleEvent(MouseEvent.MouseClicked) { 
      me: MouseEvent => Console println "clicked!" 
      } 
     }, 
     new Sphere() { 
      radius = 100 
     }) 
    } 
    } 
} 

私はCircleまたはRectangleのように、2次元形状の球を交換した場合、コントロールは再び応答しなくなります。 3D形状を追加するだけで問題になります。 mouseTransparentを設定してpickOnBoundsSphereにクリアしようとしましたが、いずれもうまくいかないようです。

どうすればコントロールをクリックしたときにマウスイベントを受け取り続けることができますか?モデルがそれらを受信しないことは許容される。

答えて

1

2D(コントロール)を混合し、3Dコンテンツを使用すると、このように、例えば、SubSceneに3Dコンテンツをラップする必要があります。

object GameWindow3D extends JFXApp { stage = new PrimaryStage { scene = new Scene(800, 600, true, SceneAntialiasing.Balanced) { root = new VBox( new Button("Click me!") { handleEvent(MouseEvent.MouseClicked) { me: MouseEvent => Console println "clicked!" } }, new SubScene(400, 400, true, SceneAntialiasing.Balanced) { root = new VBox { children = new Sphere() { radius = 100 } } } ) } } }

関連する問題