在iPhone应用中,又很多游戏是使用水平感应(重力感应)来控制的,比较有意思的如Doodle
Jump,Space Ball等,还有些赛车游戏直接把iPhone模拟成方向盘,转动你的iPhone来控制方向。

这些在Flash cs5中都可以轻松实现。

AS新增加类包 flash.sensors.Accelerometer 加速度传感器

Property:
isSupported : Boolean -静态变量,返回机器是否支持加速度感应

Methods:

Accelerometer() -创建加速度感应器

setRequestedUpdateInterval(interval:Number):void - 设置判断加速度的更新时间间隔

Events:

update -加速度更新事件

update发生后返回的3个参数

accelerationX-x轴的加速度

accelerationY-Y轴的加速度

accelerationZ-Z轴的加速度(负数表示iPhone为正面朝上,正数则是反面朝上)

实例下载

原文件

ipa

加速度

Accelerometer

Accelerometer.ipa

加速度
实例源代码

/* @author jimmy
 * www.jimmy.sh
*/
import flash.display.Sprite;
import flash.events.AccelerometerEvent;
import flash.events.Event;
import flash.sensors.Accelerometer;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
 
//3个方向的加速度
var accX:Number=0;
var accY:Number=0;
var accZ:Number=0;
//更新加速度
function update(e:AccelerometerEvent):void {
	accX=e.accelerationX;
	accY=e.accelerationY;
	accZ=e.accelerationZ;
}
//更新现实
function Show(event:Event):void {
 
	var ballX:Number=ball.x+accX*50;
	var ballY:Number=ball.y-accY*50;
 
	var dx:Number=ballX-160;
	var dy:Number=ballY-240;
 
	var jd:Number=Math.atan2(dy,dx);
 
	var d:Number=Math.sqrt(dx*dx+dy*dy);
 
	if (d<=120) {
		ball.x=ballX;
		ball.y=ballY;
	} else {
		d=120;
		ball.x=Math.cos(jd)*120+160;
		ball.y=Math.sin(jd)*120+240;
	}
	//设定球的大小
	ball.width=ball.height=d/120*30+10;
	//更新文字
	textX.text="accelerationX: "+(Math.round(accX*10000)/10000).toString();
	textY.text="accelerationY: "+(Math.round(accY*10000)/10000).toString();
	textZ.text="accelerationZ: "+(Math.round(accZ*10000)/10000).toString();
	//画线,画圈
	graphics.clear();
	graphics.lineStyle(1,0xFFFFFF);
	graphics.moveTo(160,240);
	graphics.lineTo(ball.x,ball.y);
	graphics.drawCircle(160,240,d);
}
//新建一个加速感应器
var acc:Accelerometer=new Accelerometer();
//添加侦听
acc.addEventListener(AccelerometerEvent.UPDATE,update);
this.addEventListener(Event.ENTER_FRAME,Show);