H5를 활용한 휴대폰 흔들림 구현 사례에 대한 자세한 설명
手机上的摇一摇功能不错.怎么实现的呢
在百度开发者大会上我介绍过HTML5另外一个重要特性就是DeviceOrientation,它将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。这个特性包括两种事件:
1、 deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度、方位、朝向等。
2、 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。
使用它我们能够很容易的实现重力感应、指南针等有趣的功能,在手机上将非常有用。例如Opera H5体验版里的重力感应球示例就是通过监听DeviceOrientation API的deviceOrientation事件来实现的。
H5를 활용한 휴대폰 흔들림 구현 사례에 대한 자세한 설명
其实它还能帮助我们在网页上实现一个手机应用里非常常见而时尚的功能:手机摇一摇。
我最开始见到这个功能其实是在PhotoShake里,后来包括微信在内的许许多多、大大小小的应用都加入了这个功能。 H5를 활용한 휴대폰 흔들림 구현 사례에 대한 자세한 설명
如果你曾经做过Android或者iOS开发,对于这样的功能可能非常了解。但是下面,我们将在Web上首次实现这个功能。
让我们赶快开始吧!
DeviceMotionEvent(设备运动事件)返回设备有关于加速度和旋转的相关信息。加速度的数据将包含三个轴:x,y和z(示意如下图所 示,x轴横向贯穿手机屏幕或者笔记本键盘,y轴纵向贯穿手机屏幕或笔记本键盘,z轴垂直于手机屏幕或笔记本键盘)。因为有些设备可能没有硬件来排除重力的 影响,该事件会返回两个属性,accelerationIncludingGravity(含重力的加速度)和acceleration(加速度),后者 排除了重力的影响。
H5를 활용한 휴대폰 흔들림 구현 사례에 대한 자세한 설명
我们先来监听运动传感事件。
代码如下:
[javacript] if (window.DeviceMotionEvent) { window.addEvent List ener('devicemotion',deviceMotionHan dl er, false); } [/ javascript ] 然后获取含重力的加速度。 [javacript] function deviceMotionHandler(eventData) { var acceleration =eventData.accelerationIncludingGravity; } [/javascript]</p> <p>
下面就涉及到我们如何计算用户摇晃手机的原理了。考虑的要点如下:
1、 用户大多时候都是以一个方向为主晃动手机来进行摇动;
2、 在晃动时三个方向的加速度数据必定都会变化;
3、 我们不能误判手机正常的运动行为,想一想,如果你的手机放在裤兜里,走路时它也会有加速度数据变化。
综上,我们应该针对三个方向的加速度进行计算,间隔测量它们,考察它们在固定时间段里的变化率,而且需要为它确定一个阈值来触发动作。
我们需要定义几个变量来记录历史x、y、z轴的数据以及上一次触发的时间。核心方法实现代码如下:
代码如下:
var SHAKE_THRESHOLD = xxx; var last_up date = 0; var x, y, z, last_x, last_y, last_z; function deviceMotionHandler(eventData) { var acceleration =eventData.accelerationIncludingGravity; var cur Time = new Date().getTime(); if ((curTime - lastUpdate)> 100) { var diffTime = curTime -last_update; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x +y + z - last_x - last_y - last_z) / diffTime * 10000; if (speed > SHAKE_THRESHOLD) { alert("shaked!"); } last_x = x; last_y = y; last_z = z; } }
【相关推荐】
1. Html5免费视频教程
위 내용은 H5를 활용한 휴대폰 흔들림 구현 사례에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

thetaginhtml5isusedTodefineasectionofmajornavigationLinks, 제공 섭취 구조 가공성;

adefinitionListInhtml5iscreateDusingTheLementToGroupterms ()가 theIredEfinitions (), 허용 multipleTerMstoshAreadOreAtorMtoHaveMultipleDefinitions, Glossaries, Metadata, 및 Contail -swileimprovingAcccoSandAcccoCsothoand

the elementInHtMl5IsUSSSSSS-containedContent-lifeImages, 다이어그램, 오르 코드 니핑은 eptionalElementToprovideAcaptionortitle과 함께, itcanbepaired와 함께 itcanbepaired를 withindicedindinside

웹 사이트 Favicon을 올바르게 추가하려면 먼저 32 × 32 또는 64 × 64 x64 픽셀 .ICO, .png 또는 .svg 형식 아이콘 파일 및 이름 IT favicon.ico 등을 준비한 다음 웹 사이트 루트 디렉토리 또는 지정된 경로에 배치 한 다음 HTML 태그에서 명확한 문을 사용하십시오. 예를 들어 : PNG 다양한 크기 버전, SVG 아이콘 및 Apple Touch 아이콘 추가와 같은 여러 형식과 장치를 동시에 지원하는 것이 좋습니다. 마지막으로, 캐시를 지우고 경로가 올바르고 파일에 액세스 할 수 있도록 캐시를 정상적으로 표시하는지 테스트하십시오. 전체 프로세스는 파일 형식, 경로 및 호환성에주의를 기울여야합니다.

사용자 정의 확인란을 만들려면 먼저 접근성을 보장하기 위해 레이블이있는 HTML 구조를 사용해야합니다. 2. CSS를 통해 기본 확인란을 숨기고 기능을 유지하십시오. 3. 의사 요소와 의사 클래스를 사용하여 선택한 상태를 사용자 정의 .checkmark 요소에 그리십시오. 4. 대화식 피드백을 향상시키기 위해 호버, 초점 및 선택 스타일을 추가하십시오. 5. 키보드 내비게이션 및 스크린 리더를 지원하기 위해 기본 입력을 유지하고 궁극적으로 아름답고 액세스 가능한 사용자 정의 확인란을 달성하십시오.

Rel = "Preload"는 페이지 성능을 향상시키기 위해 키 리소스를 미리로드하는 데 사용됩니다. 1. 구문을 사용하고 AS 속성을 지정하십시오. 2. 글꼴, 스타일 시트, 스크립트, 그림 등과 같은 주요 리소스를 예압하며 글꼴을 추가해야합니다. 3. 미디어 속성과 함께 조건에 따라로드 될 수 있습니다. 4. 첫 번째 화면에 주요 리소스 만로드하고 과도한 사용을 피하고 유형 및 크로스 코리 핀을 올바르게 설정하는 모범 사례를 따르십시오. 5. 최신 브라우저는이를 널리 지원하며 JavaScript를 통해 점진적인 향상 처리를 동적으로 추가하거나 수행하여 지원되지 않으면 페이지가 여전히 정상적으로 작동하도록 할 수 있습니다.

Toembedamapinhtml5, useaniframefromgooglemapsbygenerningedteembedeviathegooglemapsembedapiandinsertingitintoyourhtml.2.customizetheiframebyAdjustingwidth, 높이, 스타일, and addingattributeslikeloading = "lazy"및 mmekeitrespress

PlaceHolderAttributeProvideAshorthintininpepields thatdisappearwehentypingbegins; 1. initusiedIndelementStoshOWexMpleText와 같은 "EnteryOUremail"; 2. theHintisPlayEdonlyWhiledIntImsDisplyBrowser;
