修正 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 , 致使到 物体移动不规律。