我正在使用HTML5和JavaScript制作游戏。
如何通过JavaScript播放游戏音频?
我正在使用HTML5和JavaScript制作游戏。
如何通过JavaScript播放游戏音频?
当前回答
在react中,你可以使用ref:
// typescript
const audRef = useRef(null);
const playAudio = () => {
(audRef.current as any).play();
}
...
// html
<audio controls src={your_audio} ref={audRef} />
<button onClick={playAudio}>Play</button>
其他回答
http://www.schillmania.com/projects/soundmanager2/
SoundManager 2提供了一个易于使用的API,允许声音在任何现代浏览器中播放,包括IE 6+。如果浏览器不支持HTML5,那么它可以从flash中获得帮助。如果你想严格使用HTML5而不使用flash,这里有一个设置,preferFlash=false
它在iPad、iPhone (iOS4)和其他支持html5的设备+浏览器上支持100%无flash音频
使用简单如下:
<script src="soundmanager2.js"></script>
<script>
// where to find flash SWFs, if needed...
soundManager.url = '/path/to/swf-files/';
soundManager.onready(function() {
soundManager.createSound({
id: 'mySound',
url: '/path/to/an.mp3'
});
// ...and play it
soundManager.play('mySound');
});
</script>
这里有一个实际的演示:http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/
这很简单,只需要获取音频元素并调用play()方法:
document.getElementById('yourAudioTag').play();
看看这个例子:http://www.storiesinflight.com/html5/audio.html
这个站点还提供了一些其他很酷的功能,比如load()、pause()和音频元素的其他一些属性。
如果你想在页面打开时播放音频,那么就像这样做。
<脚本> 函数playMusic () { music.play (); } > < /脚本 < html > <audio id="music"循环src="sounds/music.wav" autoplay> </audio> .wav . < / html > 并在游戏代码中调用这个playMusic()。
这是我在一个婴儿AI项目上提出的一些JS。我希望这对你有所帮助。
<!DOCTYPE html>
<html>
<head>
<title>
js prompt AI
</title>
<style>
#button {
border: 1px solid black;
border-radius: 10px;
font-size: 22px;
height:65px;
width:100px;
text-align: center;
line-height: 65px;
}
</style>
</head>
<body>
<audio id="myAudio" src="./how_are_you.m4a"></audio>
<p>To Interact with the AI please click the button</p>
<div id=button>click</div>
<script>
var button = document.getElementById("button");
function playBack() {
button.addEventListener("click", function (){
var talk = prompt("If you wish for the AI to respond type hi");
var myAudio = document.getElementById("myAudio");
if(talk === "hi") {
myAudio.play();
}
}) ;
}
playBack();
</script>
</body>
</html>
我有一些问题与播放音频,特别是因为Chrome已经更新,用户必须首先与文档交互。
然而,在我发现的几乎所有解决方案中,JS代码都必须主动设置监听器(例如按钮点击)来接收用户事件,以便播放音频。
就我而言,我只是想让游戏在玩家与之互动时播放BGM,所以我为自己设置了一个简单的监听器,不断检查网页是否正在进行互动。
const stopAttempt = setInterval(() => {
const audio = new Audio('your_audio_url_or_file_name.mp3');
const playPromise = audio.play();
if (playPromise) {
playPromise.then(() => {
clearInterval(stopAttempt)
}).catch(e=>{
console.log('' + e);
})
}
}, 100 )