我正在使用TornadoFX和JInput来测试我计划中的个人项目的控制器输入,到目前为止,我正在尝试在控制器上输入时将实时反馈反馈到屏幕上。
我尝试在this post的帮助下轮询输入,但是我无法获取在计时器上轮询的数据以动态更新视图。这就是我到目前为止所拥有的。
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
)来解决。我想知道最简洁或可重用的方法(可能使用这些库)显示来自操纵杆的更新信息吗?