zoukankan      html  css  js  c++  java
  • scaleform mobile sdk for android 多点触摸 修正

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

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

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

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

    如果不修改 代码的话  完全可以用 通过监听 move 来做操作的 但是 总是感觉 不爽。(这个 每次 点击 都会紧跟一个 move 操作,不知道是 bug , 还是因为屏幕ppi 太高的原因)

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

    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;

    当有两个点击点是 会变成 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 , 导致到 物体移动不规律。

  • 相关阅读:
    不断学习和思考让自己成长、过得充实快乐!
    先制订个能力提升计划
    如何删除SQL Server下注册的服务器
    [转摘] 我的同学聚会--性格决定命运
    如何提高阅读速度2
    Oracle IW,WW的区别
    想象5年后的你(很多人看了很受启迪!)
    女要富养
    5年内买车买房(理财篇)
    [转摘] 从月薪3500到身价700万 我在上海的奋斗岁月
  • 原文地址:https://www.cnblogs.com/jaoye/p/4132393.html
Copyright © 2011-2022 走看看