2016-07-26 46 views
1

我正在使用同一个窗口(它是游戏)中同时具有控件和模型的ScalaFX应用程序。不幸的是,当我添加模型时,控件停止接收鼠标事件,即使两者不重叠。最小工作示例如下:JavaFX控件在使用Shape3D时不接收鼠标事件

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 
     }) 
    } 
    } 
} 

如果我有一个2D形状,像CircleRectangle更换领域,控制再次成为响应;当我添加3D形状时,这只是一个问题。我曾尝试在Sphere上设置mouseTransparent并清除pickOnBounds,但似乎都不起作用。

如何让控件在点击时继续接收鼠标事件?模型不接受它们是可以接受的。

回答

1

当混合2D(对照组)和3D内容,你应该换3D内容的SubScene,比如像这样:

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 } } } ) } } }

相关问题