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