js游戏中的声音实现



我在clear js做一个简单的游戏,我有一个关于优化的问题。

我需要的是将音乐和声音分开我有两个变体:

  1. Music是一个音频对象,而Sounds是每个声音的音频对象列表。这样,我必须改变(例如)每个声音的音量,如果它需要:
let music_player = new Audio('some src');
let sounds = {
kick: new Audio('some src'),
jump: new Audio('some src'),
run: new Audio('some src')
//there can be more sounds
};
window.addEventListener('click', function(){
music_player.play();
sounds.jump.play();
sounds.kick.play();
});
  1. 音乐没有改变,但声音现在是一个音频对象,如果我想播放不同的声音,我必须改变它的来源。它也可以是SoundPlayer的类:
let music_player = new Audio('some src');
let sound_player = new Audio('some src');
//list of sounds with their sources
let sounds = {
kick:'some src',
jump:'some src',
run:'some src'
};
function sound_play(sound){
sound_player.src = sound;
sound_player.play();
}
window.addEventListener('click', function(){
music_player.play();
sound_play(sounds.jump);
sound_play(sounds.kick);
});
你认为最好的方法是什么?

你的问题不清楚。

但让我们试着帮助……


如果你使用new Audio("src"),那么你现在有一个音频在你的javascript ..

但是你必须知道,在用户与你的dom交互之前,你不能play()它。

所以我假设用户现在与dom交互来解释下一个:

  • 使用anyAudio.play()播放音频
  • 使用anyAudio.pause()暂停音频
  • 使用anyAudio.paused检查音频是否暂停
  • 使用anyAudio.currentTime获取或设置
  • 音频的当前时间
  • 使用anyAudio.playbackRate获取和设置音频的速度default: 1
  • 使用anyAudio.volume获取和设置音频的音量default: 1

假设您想创建一个函数,从声音列表中获取音频并以特定音量播放:

let sound_player = new Audio("")
let sounds = {
kick:'some src',
jump:'some src',
run:'some src'
}
function sound_play(sound, volume){
sound_player.src = sound
sound_player.volume = volume || 1
sound_player.play()
}

现在你的函数已经准备好了,但是,要确保在用户与dom交互之后运行它,因为如果用户不与dom交互,它将无法工作。

最新更新