桓楠百科网

编程知识、经典语录与百科知识分享平台

html5重力感应剖析附源码

下面是测试html5重力感应的demo

http://bbs.qietu.com/html/zhongli/

http://www.qietu.com/html/f2/qqqianbao/

demo2是切图网为腾讯网提供的web前端技术支持的项目,采用的就是html5的重力感应。

重力感应主要用到两种事件:

1 orientationchange

这个事件在屏幕发生翻转时触发

window.orientation可获得设备的方向,一共有三个值0:竖直, 90:右旋, -90:左旋

2 deviceorientation 和 MozOrientation(firefox专用)

deviceorientation事件可获得三个值alpha,beta,gamma,分别代表绕Z轴的旋转角度(0~360),绕X轴的旋转角度(-180~180),绕Y轴的旋转角度(-90~90)

MozOrientation事件中可获得三个值z,x,y,分别代表垂直加速度,左右的倾斜角度,前后的倾斜角度(取值范围:-1~1)

坐标系见下图

下面是示例游戏用到重力感应的代码:

  1. window.onorientationchange = function(e){

  2. game.hideNavBar(); //屏幕翻转时隐藏地址栏

  3. if(game.stage) game.stage.updatePosition(); //更新舞台位置

  4. };

  5. window.ondeviceorientation = function(e)

  6. {

  7. var ang;

  8. var o = window.orientation; //获取设备方向

  9. if(o == 90){

  10. ang = e.beta; //设备横向1

  11. }

  12. else if(o == -90){

  13. ang = -e.beta; //设备横向2

  14. }

  15. else if(o == 0){

  16. ang = e.gamma; //设备纵向

  17. }

  18. if(ang > 5)

  19. {

  20. keyState[Q.KEY.RIGHT] = true;

  21. }

  22. else if(ang < -5)

  23. {

  24. keyState[Q.KEY.LEFT] = true;

  25. }

  26. else

  27. {

  28. keyState[Q.KEY.RIGHT] = false;

  29. keyState[Q.KEY.LEFT] = false;

  30. }

  31. }

无附件,源码面前,了无秘密,作为web前端工程师,我们需要具备查看源码的能力。

原文:
http://bbs.qietu.com/forum.php?mod=viewthread&tid=15036

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言