scaleform mobile sdk for android 多点触摸 修正

scaleform mobile sdk for android 多点触摸 修正,第1张

scaleform mobile sdk for android 多点触摸 修正

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

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

开始 一直以为 scaleform 没有做  多点触控 和 手势 。


其实 都已经封装好了。


只是PC端的模拟器不支持。


(调试 比较蛋疼只能 用真机了)

但是在用的时候发现 TouchEvent.Begin  有问题 只能获取第一个点击点,和第一个抬起点,move *** 作可以正常获取。


如果不修改 代码的话  完全可以用 通过监听 move 来做 *** 作的 但是 总是感觉 不爽。


(这个 每次 点击 都会紧跟一个 move *** 作,不知道是 bug , 还是因为屏幕ppi 太高的原因)

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

for (int i = ; i < p_count; i++)
{
  int action_id = action%; //就是这一行   if (Debug.ENABLED && action != )
  {
    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;

当有两个点击点是 会变成 261(256 + 5 + 0 )  , 当有3 个点击点时 会变成517 (512 + 5 + 0) 依次类推 。


具体的其他规律 想摸索可以自己 打印出来看看。


知道啥意思的 也请多多指教


其实本应该将 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 也是可以的。


之后就可以在 AS3 中 通过 如下代码来进行  *** 作了。


Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

stage.addEventListener(TouchEvent.TOUCH_BEGIN,onTouchBegin);

尾巴:

最近在搞 scaleform 的 平滑移动 , 毫无头绪中 , 几个线程完全看晕。


有知道怎么解决求指教啊。


我自己认为 scaleform 出现 移动不平滑的原因是:

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


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


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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/589454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存