HTML5 APP开发从入门到精通(微课精编版)
上QQ阅读APP看书,第一时间看更新

6.2 案例实战

下面结合案例演示HTML5访问手机传感器的基本方法。

6.2.1 记录摇手机的次数

通过devicemotion对设备运动状态的判断,网页可以实现“摇一摇”的交互效果。“摇一摇”的动作就是“一定时间内设备移动了一定的距离”,因此监听上一步获取的x、y和z值在一定时间范围的变化率,就可以判断设备是否晃动。为了防止对正常移动的误判,需要给该变化率设置一个合适的临界值,演示效果如图6.3所示。

图6.3 记录摇手机的次数

设计页面结构:

设计JavaScript脚本:

6.2.2 重力测试小游戏

本例使用HTML5游戏引擎Phaser和HTML5设备方向(device orientation)检测特性,开发一款重力小游戏,演示效果如图6.4所示。

图6.4 重力测试小游戏

用户向某个方向倾斜手机,圆球就会向那个方向滚动,倾斜角度越大,滚动速度就越快,反之越慢,水平摆放后,小球就会停止滚动。

操作步骤

第1步,在页面中导入Phaser类库。

     <script type="text/javascript" src="phaser.min.js"></script>

第2步,定义游戏的容器元素。

     <div id="gamezone"></div>

第3步,使用Phaser的游戏类生成游戏。

     var game = new Phaser.Game(300,400,Phaser.CANVAS,'gamezone',{preload:preload , create:create ,update:update });

第4步,配置游戏场景。

第5步,执行设备方向检测,这里只检测x和y轴,向某个方向偏移设备,获取偏移量。

第6步,在Phaser的update方法中,根据偏移量来计算移动速度和方向。

使用以上最简单的逻辑移动设备,设备就向四个象限移动,并且设备的偏移量越大,速度越快。速度逻辑如下。

     var speed = 10*(Math.abs(betadirection)+Math.abs(gammadirection));

使用phaser的moveToXY方法执行移动:

     game.physics.arcade.moveToXY(dogsprite, 300, 400, speed);