如何解决为什么数组中的某些声音没有暂停?
我不知道到底发生了什么,但基本上,我想要一个动态的音频文件数组,我可以在游戏中随时暂停和恢复。我尝试做的是将它们添加到数组中,这成功了,然后在它们完成播放后将它们取出,这样我就可以在不让它们再次播放的情况下恢复它们。我尝试通过遍历数组中的所有项目并暂停它们来暂停和恢复...
是的,为什么这不起作用?。我无法真正描述这个问题,所以你只能自己听。
<HTML>
<head>
<title> more S2JS baloney - test code </title>
<!--yes you are reading this-->
</head>
<body>
<button onclick="doclick(0)" id="toggle">Pause</button><br/>
<canvas id=myCanvas width=300 height=1000 style="background-color:red;"></canvas>
<script>
var ctx=myCanvas.getContext("2d");
var audio=[];
var audioPlay=[];
var paused=false;
audio.push(new Audio());
audio[0].src="https://www.soundsnap.com/streamers/files/audio/93/G-3_Legato_f.wav";
audio.push(new Audio());
audio[1].src="https://www.zapsplat.com/wp-content/uploads/2015/sound-effects-cartoon-orchestra/co_cartoon_blip_019.mp3";
function addAudio()
{if(!paused)
{audioPlay.push(audio[Math.floor(Math.random()*2)].cloneNode());
audioPlay[audioPlay.length-1].playbackRate=Math.random()*0.4+0.2;
audioPlay[audioPlay.length-1].preservesPitch=false;
audioPlay[audioPlay.length-1].volume=0.3;
audioPlay[audioPlay.length-1].play();
audioPlay[audioPlay.length-1].addEventListener("ended",function(){
audioPlay.splice(audioPlay.length-1,1);
ctx.clearRect(0,300,1000);
writeText()});
ctx.clearRect(0,1000);
writeText()}
setTimeout(addAudio,175)}
setTimeout(addAudio,175);
function doclick()
{paused=!paused;
console.log(paused);
if(paused){document.getElementById("toggle").innerHTML="Play";
for(run=0;run<audioPlay.length;run++){audioPlay[run].pause()}}
else{document.getElementById("toggle").innerHTML="Pause";
for(run=0;run<audioPlay.length;run++){audioPlay[run].play()}}
}
function writeText(){for(run=0;run<audioPlay.length;run++){ctx.fillText(Math.round(audioPlay[run].playbackRate*100)+" "+audioPlay[run].src,20+run*10)}}
</script>
</body>
</html>
顺便说一句,我不使用控制台,因为每次我记录一些东西时,它只会变大并在周围闪烁大量文本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。