如何收听 Focus 事件(Apple TV)
How to listen to Focus events (Apple TV)
我们在 Scaleform 中有一个界面,因此不能使用内置 类,例如 UIButton、UITextField 等
这是我目前尝试过的方法:
通过 UISwipeGestureRecognizer 处理滑动,但与 Focus 系统不同的是,它只在手指触摸触摸板区域时产生一个事件。
正在订阅GCMicroGamepad.dpad.ValueChangedHandler
GCMicroGamepad.reportsAbsoluteDpadValues 是肯定的,因为游戏目的需要绝对值。
我以为我可以很容易地计算出相对值。但事实证明,当我按下触摸板的一角时,得到以下更新:
(x = 1, y = 0)
(x = 1, y = 1)
而不是简单地接收
(x = 1, y = 1)
这意味着生成了两个 valueChanged 事件,而不是一个。
有没有办法订阅Focus引擎事件?
好的,我已经这样实现了:
我有一个更新循环(显然)。在这个更新循环中,我查看了 CurTouchpadPosition 和 PrevTouchpadPosition。
CurTouchpadPosition 在每次调用 GCMicroGamepad.dpad.ValueChangedHandler
时设置
更新完成后 PrevTouchpadPosition 设置为 CurTouchpadPosition。
显然,如果调用按以下顺序进行,这可能会引入一些问题:
GCMicroGamepad.dpad.ValueChangedHandler(x = 0, y = 1)
更新()
GCMicroGamepad.dpad.ValueChangedHandler(x = 1, y = 1)
但这并没有真正发生。可能 GCMicroGamepad.dpad.ValueChangedHandler 在主线程的某处被调用。
我们在 Scaleform 中有一个界面,因此不能使用内置 类,例如 UIButton、UITextField 等
这是我目前尝试过的方法:
通过 UISwipeGestureRecognizer 处理滑动,但与 Focus 系统不同的是,它只在手指触摸触摸板区域时产生一个事件。
正在订阅GCMicroGamepad.dpad.ValueChangedHandler GCMicroGamepad.reportsAbsoluteDpadValues 是肯定的,因为游戏目的需要绝对值。
我以为我可以很容易地计算出相对值。但事实证明,当我按下触摸板的一角时,得到以下更新:
(x = 1, y = 0) (x = 1, y = 1)
而不是简单地接收
(x = 1, y = 1)
这意味着生成了两个 valueChanged 事件,而不是一个。
有没有办法订阅Focus引擎事件?
好的,我已经这样实现了:
我有一个更新循环(显然)。在这个更新循环中,我查看了 CurTouchpadPosition 和 PrevTouchpadPosition。
CurTouchpadPosition 在每次调用 GCMicroGamepad.dpad.ValueChangedHandler
时设置
更新完成后 PrevTouchpadPosition 设置为 CurTouchpadPosition。
显然,如果调用按以下顺序进行,这可能会引入一些问题:
GCMicroGamepad.dpad.ValueChangedHandler(x = 0, y = 1)
更新()
GCMicroGamepad.dpad.ValueChangedHandler(x = 1, y = 1)
但这并没有真正发生。可能 GCMicroGamepad.dpad.ValueChangedHandler 在主线程的某处被调用。