Я использую TornadoFX и JInput для тестирования входов контроллера для личного проекта, который я планирую, и до сих пор пытаюсь получить обратную связь в режиме реального времени на экране, когда я вводю данные на контроллере.
Я попытался опрашивать входы с помощью этого поста , но у меня возникают проблемы с получением данных, которые я опрашивал по таймеру для динамического обновления представления. Вот что у меня есть.
import tornadofx.Controller as MVController
import net.java.games.input.Controller as Joystick
import net.java.games.input.ControllerEnvironment
import javafx.animation.AnimationTimer
import tornadofx.*
class Stats : View() {
private val gamepadController: GamepadController by inject()
// Prints out changes to controller input in console
private val timer = object: AnimationTimer() {
override fun handle(now: Long) {
gamepadController.controllers.forEach { device ->
device.poll()
// println(device.components.joinToString(",") { it.pollData.toString() })
}
}
}
init { timer.start() }
// Only updates once
override val root = vbox {
gamepadController.controllers.forEach { device ->
label(device.name)
label(device.components.joinToString(",") { it.pollData.toString() })
}
}
}
class GamepadController : MVController() {
val controllers: List<Joystick> = ControllerEnvironment
.getDefaultEnvironment()
.controllers
.filter {
it.type.toString() == "Stick"
}
}
Возможно, это можно решить с помощью одной из библиотек (rxkotlinfx
, rxkotlin
, rxjava
), которую я учусь использовать в этом проекте. Я хочу знать, какой будет наиболее краткий или многократно используемый способ отображения обновленной информации с джойстиков, возможно, с использованием этих библиотек?