在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 |
|
加速度 |
/* @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);










Well I like to browse around when i’m not so busy at work. So are you using any AutoDesk products? If so what are you using?
不是很理解从accl到计算球的位置的代码部分,请教一下~