AIR Android:旋轉手勢
旋轉手勢
旋轉手勢對應TransformGestureEvent. GESTURE_ROTATE事件類型。和放縮手勢一樣,該事件需要兩個手指觸摸屏幕,但兩個手指的滑動方向相反,例如按順時針或逆時針扭動開關,如圖3-3所示。
![]() |
圖3-3 旋轉手勢 |
處理旋轉手勢與處理放縮手勢的思路一樣,可以對上一節的程序GestureZoom稍做修改,將其中的事件類型GESTURE_ZOOM修改為GESTURE_ROTATE。
- loader.addEventListener(TransformGestureEvent.GESTURE_ROTATE, onRotate);
同時,編寫新的事件響應函數onRotate,代碼如下:
- private function onRotate(e:TransformGestureEvent):void
- {
- var p:Point = new Point( e.localX, e.localY );
- var parent_p:Point = this.globalToLocal(loader.localToGlobal(p));
- //加上新的旋轉角度
- loader.rotation += e.rotation;
- var parent_p2:Point = this.globalToLocal(loader.localToGlobal(p));
- loader.x += (parent_p.x - parent_p2.x);
- loader.y += (parent_p.y - parent_p2.y);
- }
和上一節程序中的onZoom函數比較,讀者會發現這里只有如下一點不同:
- loader.rotation += e.rotation;
對loader對象進行旋轉時,也需要動態更改注冊點,保證始終以手勢動作的作用點為中心進行操作,整個流程和縮放操作完全相同,相關代碼請參閱源代碼ch3中的 GestureRotate項目。