我们有一个Scaleform接口,因此不能使用UIButton、UITextField等内置类。
这就是我迄今为止所尝试的:
-
通过UISwipeGestureRecognizer处理滑动,但与Focus系统不同的是,当手指触摸触摸板区域时,它只会产生一个事件。
-
订阅GCMicroGamepad.dpad.ValueChangedHandlerGCMicroGamepad.reportsAbsoluteDpadValues为YES,因为出于游戏目的需要绝对值
我以为我可以很容易地算出相对值。但事实证明,当我按下触摸板的一角时,会得到以下更新:(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)
但事实并非如此。在主线程中的某个位置调用了ProbabalyGCMicroGamepad.dpad.ValueChangedHandler。