Flash Android移動觸控感測器使用教程

2021-05-27 20:18:01 字數 4135 閱讀 3063

技術點:

1.多點觸控

2.手勢識別

3.加速度感應

4.全球定位

開發環境:flashbuilder burrito

除錯環境:android手機,用usb連線,啟用除錯模式。(注:模擬器無法支援:>_<:)

demo截圖-->

首先建立乙個基本的demo模版

介面: 左邊豎排4個按鈕分別對應4個demo。

按鈕下輸出除錯資訊。

右邊為demo展示區域。

**如下:

package

private function init():void

/*** 切換demo

* @param demo

* */

private function changedemo(demo:displayobject):void

_nowdemo = demo;

addchild(_nowdemo);

}private function onmultitouchclick(e:mouseevent):void

private function ongestureclick(e:mouseevent):void

private function onaccelerometerclick(e:mouseevent):void

private function ongeolocationclick(e:mouseevent):void

}}參看工程主類:teachflashforphone 

demo基本方法說明

每個demo 都有init和destroy方法,分別對應新增到舞台的初始化操作和移出舞台時的釋放操作。

1.        多點觸控

**參看:cx.teach.phone. multitouchdemo

範例功能:建立兩個小球,可以用兩個手指同時拖動,並繪製拖動軌跡。

**如下:

package cx.teach.phone

/*** 初始化 

* */

public function init(e:event = null):void

//新增多點支援

multitouch.inputmode = multitouchinputmode.touch_point;

//橫向排列兩個球

_ball1 = new ball();

_ball1.x = 300;

_ball1.y = 100;

addchild(_ball1);

_ball2 = new ball();

_ball2.x = 500;

_ball2.y = 100;

addchild(_ball2);

//新增觸控事件

_ball1.addeventlistener(touchevent.touch_begin, ontouchbegin);

_ball2.addeventlistener(touchevent.touch_begin, ontouchbegin);

stage.addeventlistener(touchevent.touch_move, ontouchmove);

stage.addeventlistener(touchevent.touch_end, ontouchend);

}/**

* 銷毀 

* */

public function destroy(e:event = null):void

/*** 觸控開始 

* @param e

* */

private function ontouchbegin(e:touchevent):void

/*** 觸控移動中 

* @param e

* */

private function ontouchmove(e:touchevent) :void

/*** 觸控結束 

* @param e

* */

private function ontouchend(e:touchevent):void

/*** 繪製線段 

* @param frompos

* @param topos

* @param color

* */

private function drawline(frompos:point,topos:point,color:uint):void}}

**說明:

首先是要做乙個可行性檢測

if(!multitouch.supportstouchevents)

不支援就沒戲了,可能要做些友好提示,或切換到其他操作模式。

然後這一句就是告訴手機我要使用多點觸控了,要自己來用**來判斷觸控點。

multitouch.inputmode = multitouchinputmode.touch_point;

我們需要監聽touchevent中的三個事件(touch_begin,touch_move,touch_end)

分別對應觸控的開始,移動和結束。相當於滑鼠的mouse_down,mouse_move,mouse_up。

開始和停止拖動:

starttouchdrag(e.touchpointid); stoptouchdrag(e.touchpointid);

注意:在拖放中傳入了乙個引數e.touchpointid,它是flash為每個觸控點分配的唯一的值,就是對應你當前在螢幕上的那個手指。在每個事件中都通過這個id來判斷。以前操作滑鼠因為只有乙個點,所以不用加判斷。這裡有多個點,那麼我們就要用乙個字典來管理他們,我建立了乙個私有變數_touchdic來管理和儲存某個觸控點上次的位置座標。這樣可以根據每個手指做更加複雜的處理。

然後在移動的時候我更新了字典中觸控點的位置,做了畫線處理,當然還可以做更加有趣的操作,有待創意了。

大致就是這樣的乙個流程,**裡面應該寫得比較清晰了。

2.        手勢識別

**參看:cx.teach.phone. gesturedemo

範例功能:建立乙個方塊,用手指在螢幕上做手勢來旋轉,縮放,移動。

**如下:

package cx.teach.phone

/*** 初始化 

* */

public function init(e:event = null):void

//新增手勢支援

multitouch.inputmode = multitouchinputmode.gesture;

//建立方塊

_box = new box();

_box.x = 400;

_box.y = 200;

addchild(_box);

//新增手勢監聽

stage.addeventlistener(transformgestureevent.gesture_rotate,onrotate);//旋**用兩根手指做旋轉手勢

stage.addeventlistener(transformgestureevent.gesture_zoom,onzoom);//縮放:用兩根手指靠近和遠離

stage.addeventlistener(transformgestureevent.gesture_pan,onpan);//平移:用兩根手指在螢幕上滑動

}/**

* 銷毀 

* */

public function destroy(e:event = null):void

/*** 識別為旋轉 

* @param e

* */

private function onrotate(e:transformgestureevent):void

}/**

* 識別為縮放 

* @param e

* */

private function onzoom(e:transformgestureevent):void

}/**

* 識別為移動 

* @param e

* */

private function onpan(e:transformgestureevent):void}}

}出處:樂酷

網路

移動端觸屏事件

移動端瀏覽器相容性較好,我們不需要考慮以前 js 的相容性問題,可以放心的使用原生 js 書寫效果,但是移動端也有自己獨特的地方。比如觸屏事件 touch 也稱觸控事件 android和 ios 都有。touch 物件代表乙個觸控點。觸控點可能是一根手指,也可能是一根觸控筆。觸屏事件可響應使用者手指...

移動端觸屏滑動

移動端觸屏滑動的效果其實就是輪播,在pc的頁面上很好實現,繫結click和mouseover等事件來完成。但是在移動裝置上,要實現這種輪播的效果,就需要用到核心的touch事件。處理touch事件能跟蹤到螢幕滑動的每根手指。以下是四種touch事件 touchstart 手指放到螢幕上時觸發 tou...

移動端觸屏滑動拖拽

移動端觸屏滑動的效果其實就是輪播,在pc的頁面上很好實現,繫結click和mouseover等事件來完成。但是在移動裝置上,要實現這種輪播的效果,就需要用到核心的touch事件。處理touch事件能跟蹤到螢幕滑動的每根手指。以下是四種touch事件 touchstart 手指放到螢幕上時觸發 tou...