scaleform mobile sdk for android 多点触摸 修正

修正 scaleform 的多点触控 (随手一记 给后来的人作个参考)java

scaleform 版本号 4.2.24 (估计这就是最后一个 移动版的版本了,万年没有更新了)android

开始 一直觉得 scaleform 没有作  多点触控 和 手势 。其实 都已经封装好了。只是PC端的模拟器不支持。(调试 比较蛋疼只能 用真机了)spa

可是在用的时候发现 TouchEvent.Begin  有问题 只能获取第一个点击点,和第一个抬起点,move 操做能够正常获取。线程

若是不修改 代码的话  彻底能够用 经过监听 move 来作操做的 可是 老是感受 不爽。(这个 每次 点击 都会紧跟一个 move 操做,不知道是 bug , 仍是由于屏幕ppi 过高的缘由)调试

问题很好解决 找到 MainActivity.java 文件的最后 几行code

for (int i = 0; i < p_count; i++)
{
  int action_id = action%256; //就是这一行   if (Debug.ENABLED && action != 2)   {     Log.d("GFxPlayer", " PointerIds: " + " " + event.getPointerId(i) + "Action: "+Integer.toString(action)
      + " ID: "+Integer.toString(action_id) );   }   NativeOnTouch(event.getPointerId(i), action_id, event.getX(i), event.getY(i)); }


android 在 多点触控的时候 这个 action 值 是不定的。可是颇有规律,(我android一窍不通,不清楚为什么这个样子),在只有一个点击点是  action = 0;orm

当有两个点击点是 会变成 261(256 + 5 + 0 )  , 当有3 个点击点时 会变成517 (512 + 5 + 0) 依次类推 。 具体的其余规律 想摸索能够本身 打印出来看看。blog

知道啥意思的 也请多多指教。其实本应该将 261 转成 0 , 517 转成 0 的 , 可是 我发现他在  Platform_Android_GL.cpp 文件中对 TouchEvents[] 的 5,6,7 一样设置了 GFx::Event::TouchBegin, GFx::Event::TouchEnd, GFx::Event::TouchMove}; 这样就不用必须 转成 0 1 2,转成 5,6,7 也是能够的。 get

 

以后就能够在 AS3 中 经过 以下代码来进行 操做了。 input

 Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 

 stage.addEventListener(TouchEvent.TOUCH_BEGIN,onTouchBegin); 

 

 

尾巴:

最近在搞 scaleform 的 平滑移动 , 毫无头绪中 , 几个线程彻底看晕。有知道怎么解决求指教啊。

我本身认为 scaleform 出现 移动不平滑的缘由是:

1.每次  drawFrame 的时间 不等长 , 致使 指教用 ENTER_FRAME 进行刷帧 ( x + speed ) 不平稳。

delta 这个时间差 没法 在程序中 直接获取。

2.因为线程 间 相互注入 致使 在执行完 Advance 方法后 未必 必定会进行 draw , 致使到 物体移动不规律。

相关文章
相关标签/搜索