首页 web前端 H5教程 HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例_html5教程技巧

HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例_html5教程技巧

May 16, 2016 pm 03:46 PM
html5 摇一摇

介绍之前做两个声明:

以下代码可以直接运行,当然你别忘了引用jQuery才行。

复制代码
代码如下:

<script><br />// DeviceOrientation将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。<br />// 这个特性包括两个事件:<br />// 1、deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据(手机所处的角度、方位和朝向等)。<br />// 2、deviceMotion:封装了运动传感器的事件,可以获取手机运动状态下的运动加速度等数据。<br />// 使用这两个事件,可以很能够实现重力感应、指南针等有趣的功能。 <p>// 现在在很多Native应用中有一个非常常见而时尚的功能 &mdash;&mdash; 摇一摇,摇一摇找人、摇一摇看新闻、摇一摇找金币。。。<br />// 也许在android或者ios的客户端上对这个功能你已经很了解了,但是现在,我将告诉你如何在手机网页上实现摇一摇的功能。 <p>// OK,那我们现在就开始吧,嘿嘿~<br />// 先来让我们了解一下设备运动事件 &mdash;&mdash; DeviceMotionEvent:返回设备关于加速度和旋转的相关信息,其中加速度的数据包含以下三个方向:<br />// x:横向贯穿手机屏幕;<br />// y:纵向贯穿手机屏幕;<br />// z:垂直手机屏幕。<br />// 鉴于有些设备没有排除重力的影响,所以该事件会返回两个属性:<br />// 1、accelerationIncludingGravity(含重力的加速度)<br />// 2、acceleration(排除重力影响的加速度) <p>// 作为码农,上代码才是最直接的,come on,代码走起! <p>// 首先在页面上要监听运动传感事件 <br />function init(){<br />  if (window.DeviceMotionEvent) {<br />    // 移动浏览器支持运动传感事件<br />    window.addEventListener('devicemotion', deviceMotionHandler, false);<br />    $("#yaoyiyaoyes").show();<br />  } else{<br />    // 移动浏览器不支持运动传感事件<br />    $("#yaoyiyaono").show();<br />  } <br />} <p>// 那么,我们如何计算用户是否是在摇动手机呢?可以从以下几点进行考虑:<br />// 1、其实用户在摇动手机的时候始终都是以一个方向为主进行摇动的;<br />// 2、用户在摇动手机的时候在x、y、z三个方向都会有相应的想速度的变化;<br />// 3、不能把用户正常的手机运动行为当做摇一摇(手机放在兜里,走路的时候也会有加速度的变化)。<br />// 从以上三点考虑,针对三个方向上的加速度进行计算,间隔测量他们,考察他们在固定时间段里的变化率,而且需要确定一个阀值来触发摇一摇之后的操作。 <p>// 首先,定义一个摇动的阀值<br />var SHAKE_THRESHOLD = 3000;<br />// 定义一个变量保存上次更新的时间<br />var last_update = 0;<br />// 紧接着定义x、y、z记录三个轴的数据以及上一次出发的时间<br />var x;<br />var y;<br />var z;<br />var last_x;<br />var last_y;<br />var last_z; <p>// 为了增加这个例子的一点无聊趣味性,增加一个计数器<br />var count = 0; <p>function deviceMotionHandler(eventData) {<br />  // 获取含重力的加速度<br />  var acceleration = eventData.accelerationIncludingGravity; <p>  // 获取当前时间<br />  var curTime = new Date().getTime(); <br />  var diffTime = curTime -last_update;<br />  // 固定时间段<br />  if (diffTime > 100) {<br />    last_update = curTime; <p>    x = acceleration.x; <br />    y = acceleration.y; <br />    z = acceleration.z; <p>    var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; <p>    if (speed > SHAKE_THRESHOLD) { <br />      // TODO:在此处可以实现摇一摇之后所要进行的数据逻辑操作<br />      count++;<br />      $("#yaoyiyaoyes").hide();<br />      $("#yaoyiyaoresult").show();<br />      $("#yaoyiyaoresult").html("摇你妹!第" + count + "个了!");<br />    } <p>    last_x = x; <br />    last_y = y; <br />    last_z = z; <br />  } <br />} <br /></script>



<script><br />$(document).ready(function(){<br />init();<br />});<br /></script>
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

HTML 中的表格边框 HTML 中的表格边框 Sep 04, 2024 pm 04:49 PM

HTML 表格边框指南。在这里,我们以 HTML 中的表格边框为例,讨论定义表格边框的多种方法。

HTML 左边距 HTML 左边距 Sep 04, 2024 pm 04:48 PM

HTML 左边距指南。在这里,我们讨论 HTML margin-left 的简要概述及其示例及其代码实现。

HTML 中的嵌套表 HTML 中的嵌套表 Sep 04, 2024 pm 04:49 PM

这是 HTML 中嵌套表的指南。这里我们讨论如何在表中创建表以及相应的示例。

HTML 表格布局 HTML 表格布局 Sep 04, 2024 pm 04:54 PM

HTML 表格布局指南。在这里,我们详细讨论 HTML 表格布局的值以及示例和输出。

HTML 输入占位符 HTML 输入占位符 Sep 04, 2024 pm 04:54 PM

HTML 输入占位符指南。在这里,我们讨论 HTML 输入占位符的示例以及代码和输出。

在 HTML 中移动文本 在 HTML 中移动文本 Sep 04, 2024 pm 04:45 PM

HTML 中的文本移动指南。在这里我们讨论一下marquee标签如何使用语法和实现示例。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在这里我们还分别讨论了 HTML 有序列表和类型的介绍以及它们的示例

HTML onclick 按钮 HTML onclick 按钮 Sep 04, 2024 pm 04:49 PM

HTML onclick 按钮指南。这里我们分别讨论它们的介绍、工作原理、示例以及各个事件中的onclick事件。

See all articles