Ich arbeite an einer ScalaFX-Anwendung, die sowohl Steuerelemente als auch Modelle im selben Fenster hat (es ist ein Spiel). Wenn ich die Modelle hinzufüge, hören die Steuerelemente unglücklicherweise auf, Mausereignisse zu empfangen, obwohl sich die zwei nicht überlappen. Ein kleinstes Arbeitsbeispiel sieht wie folgt aus:JavaFX-Steuerelemente empfangen keine Mausereignisse, wenn auch Shape3D verwendet wird
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
})
}
}
}
Wenn ich die Kugel mit einer 2D-Form, wie Circle
oder Rectangle
, die Kontrollen werden in Reaktion wieder zu ersetzen; Es ist nur ein Problem, wenn ich 3D-Formen hinzufüge. Ich habe versucht, mouseTransparent
und pickOnBounds
auf dem Sphere
löschen, aber keiner scheint zu funktionieren.
Wie kann ich zulassen, dass die Steuerelemente weiterhin Mausereignisse erhalten, wenn sie angeklickt werden? Es ist akzeptabel, dass die Modelle sie nicht empfangen.