• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    JavaScript+H5實現微信搖一搖功能

    來源:懂視網 責編:小采 時間:2020-11-27 22:14:17
    文檔

    JavaScript+H5實現微信搖一搖功能

    JavaScript+H5實現微信搖一搖功能:項目終于如約上線,但是在春節前又有一個新的活動要做,類似微信的搖一搖活動。也一直在做微信公眾號的東西,但是要調用微信搖一搖的接口還是有些困難,因為只提供了搖一搖周邊,附近的人以及一系列的紅包頁面,相對于我們的需求只需要搖一搖這個動作卻是大相
    推薦度:
    導讀JavaScript+H5實現微信搖一搖功能:項目終于如約上線,但是在春節前又有一個新的活動要做,類似微信的搖一搖活動。也一直在做微信公眾號的東西,但是要調用微信搖一搖的接口還是有些困難,因為只提供了搖一搖周邊,附近的人以及一系列的紅包頁面,相對于我們的需求只需要搖一搖這個動作卻是大相

    項目終于如約上線,但是在春節前又有一個新的活動要做,類似微信的搖一搖活動。也一直在做微信公眾號的東西,但是要調用微信搖一搖的接口還是有些困難,因為只提供了搖一搖周邊,附近的人以及一系列的紅包頁面,相對于我們的需求只需要搖一搖這個動作卻是大相徑庭。

    其實H5+JavaScript寫出來的頁面,通過獲取手機的屏幕長和寬,以及添加聲音等就可以實現搖一搖的效果。 

    第一步,實現手機搖動改變顏色

    <!doctype html> 
    <html> 
     <head> 
     <meta charset="utf-8" /> 
     <meta name="viewport" content="width=device-width,initial-scale=1.0"/> 
     <title>HTML5 手機搖一搖</title> 
     <script type="text/javascript"> 
     var color = new Array('#fff', '#ff0', '#f00', '#000', '#00f', '#0ff'); 
     if(window.DeviceMotionEvent) { 
     var speed = 25; 
     var x = y = z = lastX = lastY = lastZ = 0; 
     window.addEventListener('devicemotion', function(){ 
     var acceleration =event.accelerationIncludingGravity; 
     x = acceleration.x; 
     y = acceleration.y; 
     if(Math.abs(x-lastX) > speed || Math.abs(y-lastY) > speed) { 
     document.body.style.backgroundColor = color[Math.round(Math.random()*10)%6]; 
     } 
     lastX = x; 
     lastY = y; 
     }, false); 
     } 
     </script> 
     </head> 
     <body> 
     手機搖一搖,改變屏幕顏色。 
     </body> 
    </html> 

    主要是手機的DeviceMotionEvent事件

    第二步,微信搖一搖手勢

    相對于第一步就是增加了搖一搖手勢,改變了搖動事件。在搖一搖動作之后再添加自己想要的方法即可,無論是想要進入下一個自己做的頁面還是觸發一個Controller事件都可以。

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
    <html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0"> 
     <title>搖一搖</title> 
     <link rel="stylesheet" href="plug-in/liuliangbao/shake/css/shake.css" rel="external nofollow" > 
     <link rel="stylesheet" href="plug-in/liuliangbao/shake/css/myDialog.css" rel="external nofollow" > 
     <script type="text/javascript" src="plug-in/liuliangbao/shake/js/jquery.min.js"></script> 
     <script type="text/javascript" src="plug-in/liuliangbao/shake/js/howler.min.js"></script> 
     <script type="text/javascript" src="plug-in/liuliangbao/shake/js/fastclick.js"></script> 
     <script type="text/javascript" src="plug-in/liuliangbao/shake/js/myDialog.js"></script> 
     
     <script type="text/javascript"> 
     var SHAKE_THRESHOLD = 1000; 
     var last_update = 0; 
     var last_time = 0; 
     var x; 
     var y; 
     var z; 
     var last_x; 
     var last_y; 
     var last_z; 
     var sound = new Howl({ urls: ['/shake/sound/shake_sound.mp3'] }).load(); 
     var findsound = new Howl({ urls: ['/shake/sound/shake_match.mp3'] }).load(); 
     var curTime; 
     var isShakeble = true; 
     
     function init() { 
     if (window.DeviceMotionEvent) { 
     window.addEventListener('devicemotion', deviceMotionHandler, false); 
     } else { 
     $("#cantshake").show(); 
     } 
     } 
     
     function deviceMotionHandler(eventData) { 
     curTime = new Date().getTime(); 
     var diffTime = curTime - last_update; 
     if (diffTime > 100) { 
     var acceleration = eventData.accelerationIncludingGravity; 
     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 && curTime - last_time > 1100 && $("#loading").attr('class') == "loading" && isShakeble) { 
     shake(); 
     } 
     last_x = x; 
     last_y = y; 
     last_z = z; 
     } 
     } 
     
     function shake() { 
     last_time = curTime; 
     $("#loading").attr('class','loading loading-show'); 
     $("#shakeup").animate({ top: "10%" }, 700, function () { 
     $("#shakeup").animate({ top: "25%" }, 700, function () { 
     $("#loading").attr('class','loading'); 
     
     findsound.play(); 
     //在此為搖動之后的事件,這里為調用ControllergoShakeResult方法 
     window.location.href = "shakeController.do?goShakeResult&phoneNumber=${phoneNumber}&hdid=${hdid}&openid=${openid}"; 
     }); 
     }); 
     $("#shakedown").animate({ top: "40%" }, 700, function () { 
     $("#shakedown").animate({ top: "25%" }, 700, function () { 
     }); 
     }); 
     sound.play(); 
     } 
     
     //各種初始化 
     $(document).ready(function () { 
     Howler.iOSAutoEnable = false; 
     FastClick.attach(document.body); 
     init(); 
     }); 
     </script> 
    </head> 
    <body> 
     <table id="container"> 
     <tbody> 
     <tr> 
     <td class="container" colspan="2"> 
     <div id="shake"> 
     <img src="plug-in/liuliangbao/shake/images/inner.png" class="inner"> 
     <img src="plug-in/liuliangbao/shake/images/shake.png" class="shake_up" id="shakeup"> 
     <img src="plug-in/liuliangbao/shake/images/shake.png" class="shake_down" id="shakedown"> 
     </div><div id="loading" class="loading"></div> 
     </td> 
     </tr> 
     <tr> 
     <td> 
     您今天還可以搖<input id="shakeCount" name="shakeCount" value="${leftcount}">次 
     </td> 
     </tr> 
     <tr> 
     <td>正確姿勢:握緊手機,用力搖動3秒,苦練18年的麒麟臂終于派上用場了。</td> 
     </tr> 
     </tbody> 
     </table> 
    </body> 
    </html>

    有時候真的可以換一種方法去實現自己想要的功能。附圖:demo本來實現的效果是:

                       

    改版之后

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript+H5實現微信搖一搖功能

    JavaScript+H5實現微信搖一搖功能:項目終于如約上線,但是在春節前又有一個新的活動要做,類似微信的搖一搖活動。也一直在做微信公眾號的東西,但是要調用微信搖一搖的接口還是有些困難,因為只提供了搖一搖周邊,附近的人以及一系列的紅包頁面,相對于我們的需求只需要搖一搖這個動作卻是大相
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲国产精品一区二区第四页| 亚洲国产精品18久久久久久| 精品国产一区二区三区久久蜜臀 | 亚洲精品专区在线观看| 国产精品亚洲专区在线观看| 一本久久a久久精品亚洲| 国产精品99爱免费视频| 国产精品日韩AV在线播放 | 四虎国产精品成人| 88国产精品欧美一区二区三区 | 欧美亚洲精品在线| 久久精品国产久精国产思思| 国内精品久久久久影院网站 | 国产成人99久久亚洲综合精品| 国产精品亚韩精品无码a在线| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 色一乱一伦一图一区二区精品| 免费精品精品国产欧美在线欧美高清免费一级在线 | 亚洲成人精品久久| 办公室久久精品| 亚洲综合国产精品| 2022国产精品自产拍在线观看| 无码人妻精品一区二区| 宅男宅女精品国产AV天堂| 久久久久久青草大香综合精品| 国产在线国偷精品免费看| 国产精品无码素人福利不卡| 99久久国产热无码精品免费久久久久| 华人亚洲欧美精品国产 | 一本色道久久88精品综合| 夜夜高潮夜夜爽国产伦精品| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产观看精品一区二区三区 | 亚洲精品无码久久久久sm| 亚洲国产精品乱码一区二区| 中国精品18videosex性中国| 一本色道久久88精品综合| 亚洲AV永久无码精品网站在线观看 | 成人精品一区二区三区| 久久精品国产亚洲av麻豆小说 | 亚洲精品人成无码中文毛片|