在IOS中第一次调用玩的方法播放音频会被阻止,必须得等用户有交互动作,比如touchstart,点击后才能正常调用,所以可以在摇一摇之前提醒用户点击一下开始游戏的按钮或者给用户一个弹窗,用户点击的时候播放一个超级短的无声音文件,之后替换src,这样再调用玩的方法就可以了。
代码如下如:
& lt; !DOCTYPE html> & lt; html lang=皕h型”比; & lt; head> & lt;元charset=" utf - 8 "/比; & lt;元name=笆哟啊蹦谌?翱矶?设备宽度,初始=1.0”/比; & lt;元http-equiv=癤-UA-Compatible”内容=癷e=边缘”/比; & lt; title> Document & lt;/head> & lt; body> & lt; button>开始游戏& lt;/button> & lt;音频src=" https://daoket.github.io/img/load。mp3音频“id=祝辞& lt;/audio> & lt;脚本src=" http://libs.baidu.com/jquery/2.0.0/jquery.min.js "祝辞& lt;/script> & lt;脚本type=" text/javascript祝辞 $(“按钮”)。一个(touchstart,函数(){ var音频=. getelementbyid(“音频”); audio.play (); 音频。setAttribute (“src”、“https://daoket.github.io/img/shake.mp3”); audio.load (); (美元)。text(“游戏进行中”); })/* * *移动端摇一摇 * @params devicemotion提供设备加速度信息 */窗口。addEventListener (devicemotion, devicemotionHandler、虚假); var x, y, z, last_x, last_y, last_z, last_time=0, SHAKE_SPEED=4000; 函数devicemotionHandler(艾维特){ var acc=event.accelerationIncludingGravity, .getTime curTime=new日期()(), diffTime=curTime - last_time; 如果(diffTime比;100){ last_time=curTime; x=acc.x; y=acc.y; z=acc.z; var速度=数学。abs (x + y + z - last_x last_y last_z)/diffTime * 10000; 如果速度比;SHAKE_SPEED) { . getelementbyid(“音频”).play () } last_x=x; last_y=y; last_z=z; } } & lt;/script> & lt;/body> & lt;/html>
在线查看
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。