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 , 致使到 物體移動不規律。

相關文章
相關標籤/搜索