使用来自JInput的操纵杆输入更新TornadoFX视图

时间:2019-05-30 21:17:11

标签: kotlin tornadofx rx-kotlin jinput

我正在使用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"
            }
}

也许可以通过使用我正在此项目中使用的一个库(rxkotlinfxrxkotlinrxjava)来解决。我想知道最简洁或可重用的方法(可能使用这些库)显示来自操纵杆的更新信息吗?

0 个答案:

没有答案