![HTML5 APP开发从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/420/31794420/b_31794420.jpg)
上QQ阅读APP看书,第一时间看更新
6.2 案例实战
下面结合案例演示HTML5访问手机传感器的基本方法。
6.2.1 记录摇手机的次数
通过devicemotion对设备运动状态的判断,网页可以实现“摇一摇”的交互效果。“摇一摇”的动作就是“一定时间内设备移动了一定的距离”,因此监听上一步获取的x、y和z值在一定时间范围的变化率,就可以判断设备是否晃动。为了防止对正常移动的误判,需要给该变化率设置一个合适的临界值,演示效果如图6.3所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P107_12353.jpg?sign=1739321878-Il1wGcQrGtWgCXzSHjSQmSXO0nOiYo6D-0-844a4cf04ca057b39ddea4e40c4e1335)
图6.3 记录摇手机的次数
设计页面结构:
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P107_41032.jpg?sign=1739321878-bUPJagbCuBOoxPnVEmIWt3ScNDRxc9UM-0-1b4d217051ddfbe28caa0c9bf922cab4)
设计JavaScript脚本:
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P108_12448.jpg?sign=1739321878-3d5vxUCRklF3ixp3vGwsqX7tMH47NmcX-0-5b3e78c20c70b41f9af93068237ba6d3)
6.2.2 重力测试小游戏
本例使用HTML5游戏引擎Phaser和HTML5设备方向(device orientation)检测特性,开发一款重力小游戏,演示效果如图6.4所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P109_12531.jpg?sign=1739321878-Reh3ucgWUBfmHjhFNPxAwmJ34O9WhkRm-0-54037c51b793afd906cf5a4db876663c)
图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步,配置游戏场景。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P109_41039.jpg?sign=1739321878-kftvV1HBDuXS0QoMAF2LZ5ujB8LuIMPp-0-603678d2fc028fea1cf1ece20d749c5d)
第5步,执行设备方向检测,这里只检测x和y轴,向某个方向偏移设备,获取偏移量。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P109_41041.jpg?sign=1739321878-mlbMJwyNP6tyddQ8vSmTBnUIcoGhZI5A-0-79a212d214b71d0a68a0237850ebed01)
第6步,在Phaser的update方法中,根据偏移量来计算移动速度和方向。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P110_41043.jpg?sign=1739321878-zzbhCFbQse05ehjbwdw5EolQZufJ9uVe-0-3cd21595aa413f583e7e43946e4a294d)
使用以上最简单的逻辑移动设备,设备就向四个象限移动,并且设备的偏移量越大,速度越快。速度逻辑如下。
var speed = 10*(Math.abs(betadirection)+Math.abs(gammadirection));
使用phaser的moveToXY方法执行移动:
game.physics.arcade.moveToXY(dogsprite, 300, 400, speed);