Несоответствие типов ScalaFX для event.getCode () - PullRequest
0 голосов
/ 02 марта 2019

Я получаю эту ошибку в 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
  }


}

1 Ответ

0 голосов
/ 02 марта 2019

Обновление, я нашел решение.Всякий раз, когда вы работаете с scalaFx, убедитесь, что

import scalaFx.Includes._

Важно поменять типизацию с типов Java

...