2010/5/9

Flash CS5 Accelerometer 範例

Mark Doherty 貼了一段CS5 accelerometer api功能的demo影片

Device Central CS5 - Accelerometer from Mark Doherty on Vimeo.

In this video we look at the Accelerometer API in Flash Player 10.1 and AIR and the integration with Device Central CS5


以下分享一下這個範例的原始碼及心得:


accelerometer就是我們常俗稱的g-sensor,用來測量重力的sensor。
一般來說這種accelerometer都會給三個軸向的數值,分別為x,y,z,且都會是正~負的一個範圍,例如1~-1, 100~-100這種的。
而Flash提供的是1~-1的範圍。以面對手機瑩幕來看,水平線為X,垂直線為Y,穿透瑩幕的縱向為z

在Flash中使用acceleration api其實沒什麼困難,設好update event後,就會持續收到訊號,訊號內容有三個值
accelerationX
accelerationY
accelerationZ
各別都是1 ~ -1的一個值,拿這些值來做應用即可

以下範例是做了一個小鋼珠在桌面滑來滑去的動態,除了用AccelerometerEvent外,另外多加了些摩擦力、慣性的模擬。

在電腦要測的話,可開啟Device Central CS5的3D模擬面板試玩。

最後有一點要注意,Accelerometer的靈敏度,甚至軸向,有時在不同的device上會有所不同,所以一些參數會需要因不同的機子調整,例如這個範例我在iPhone及Nexus One上測試,其X軸的正負值就完全相反,sensor回傳event的靈敏度也不太相同。

以下為範例code:


2 則留言:

garysiu 提到...

function loop(e:Event):void{

speedX-=gx;
speedY-=gy;
speedX*=frictionR;
speedY*=frictionR;

Maso Lin 提到...

@garysiu 不同device有時正負會不同,靈敏度也不同。上面有寫到。