Я получаю эту ошибку в ScalaFx при попытке установить обработчик событий для нажатия клавиш:
Type mismatch, expected: scalafx.scene.input.KeyCode, actual: javafx.scene.input.KeyCode
Я не уверен, почему фактический тип выходит как тип Java, яподозреваю, что это может быть в моем импорте, но я ничего не могу найти об этом где-либо.Вот что у меня есть:
import scalafx.application
import scalafx.application.JFXApp
import scalafx.scene._
import scalafx.scene.shape.{Circle, Rectangle}
import scalafx.scene.paint.Color._
import scalafx.scene.input.{KeyCode, KeyEvent}
import scalafx.event.{EventHandler, EventType}
object GUI extends JFXApp{
var playerSpeed: Double = 10.0
var sceneGraphics: Group = new Group{}
val circle: Circle = new Circle{
centerX = 100.0
centerY = 50.0
radius = 50.0
fill = Green
}
sceneGraphics.children.add(circle)
val rectangle: Rectangle = new Rectangle{
width = 60
height = 60
translateX = 600
translateY = 700
fill = Blue
}
sceneGraphics.children.add(rectangle)
def keyPressed(keyCode: KeyCode): Unit = {
keyCode.getName match {
case "W" => circle.translateY.value -= playerSpeed
case "A" => circle.translateX.value -= playerSpeed
case "S" => circle.translateY.value += playerSpeed
case "D" => circle.translateX.value += playerSpeed
case _ => println(keyCode.getName)
}
}
stage = new application.JFXApp.PrimaryStage {
title.value = "testing"
//stage.setFullScreen(true)
scene = new Scene(800, 800) {
content = List(sceneGraphics)
}
EventHandler(KeyEvent.KeyPressed, (event: KeyEvent) => keyPressed(event.getCode)) <- error is here
}
}