문서

 >  기사  >  웹 프론트엔드  >  WeChat “Shake” 기능은 어떻게 구현되나요?

WeChat “Shake” 기능은 어떻게 구현되나요?

零下一度
零下一度원래의
2017-07-19 17:32:492519검색

위챗 '흔들기' 기능은 어떻게 구현되나요?

코드는 다음과 같습니다:

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width,user-scalable=no" />
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#box {
width: 200px;
height: 200px;
background: red;
font-size: 20px;
color: #fff;
}
</style>
</head>
<body>
<div id="box"></div>
<script type="text/javascript">
toShake(function(){
alert("您进行了摇一摇");
});
function toShake(callBack){
var RANGE = 60;//当用户摇晃的幅度超过这个值,我们认定用户在摇一摇
var isShake = false;//是否进行了摇一摇
var lastX,lastY,lastZ;
var lastTime = Date.now();
window.addEventListener(&#39;devicemotion&#39;, function(e) {
var nowTime = Date.now();
//拉开执行的间隔,让iso和安卓的执行频率接近一致
if(nowTime - lastTime < 100){
return;
}
lastTime = nowTime;
var motion = e.accelerationIncludingGravity;
var x = motion.x;
var y = motion.y;
var z = motion.z;
if(typeof lastX == "undefined"){//第一次进来还没有上一次的值
lastX = x;
lastY = y;
lastZ = z;
return;
}
var nowRange = Math.abs(x - lastX) + Math.abs(y - lastY) + Math.abs(z - lastZ);
if(nowRange > RANGE){
isShake = true;
} 
//当用户进行了剧烈的摇动,我们就认定用户进行了摇一摇,然后摇晃幅度慢下来之后,执行摇一摇函数
if(isShake&&nowRange < 20){
callBack&&callBack();
isShake = false;
}
lastX = x;
lastY = y;
lastZ = z;
});
}
</script>
</body>
</html>


위 내용은 WeChat “Shake” 기능은 어떻게 구현되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.