技術點:
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...