所以我已經用於播放隨機歌曲的腳本: http://pastebin.com/G5JNFfY9如何更改此腳本中的音量? (JavaScript的)
我不完全知道我怎麼可能會改變音量,任何人都可以算出它(audio.volume不工作)?由於音頻是在函數中定義的,因此我還需要弄清楚如何更改此腳本以外的音量。
此外,我需要一個關於如何更有效地緩衝這個問題的例子。
所以我已經用於播放隨機歌曲的腳本: http://pastebin.com/G5JNFfY9如何更改此腳本中的音量? (JavaScript的)
我不完全知道我怎麼可能會改變音量,任何人都可以算出它(audio.volume不工作)?由於音頻是在函數中定義的,因此我還需要弄清楚如何更改此腳本以外的音量。
此外,我需要一個關於如何更有效地緩衝這個問題的例子。
您可以使用audio.volume
你只需要具有檢索當前播放的音頻
var collection=[];// final collection of sounds to play
var loadedIndex=0;// horrible way of forcing a load of audio sounds
var range = document.getElementById('range');
// remap audios to a buffered collection
function init(audios) {
for(var i=0;i<audios.length;i++) {
var audio = new Audio(audios[i]);
collection.push(audio);
audio.volume = range.value/100;
buffer(audio);
}
}
// did I mention it's a horrible way to buffer?
function buffer(audio) {
if(audio.readyState==4)return loaded();
setTimeout(function(){buffer(audio)},100);
}
// check if we're leady to dj this
function loaded() {
loadedIndex++;
if(collection.length==loadedIndex)playLooped();
}
// play and loop after finished
function playLooped() {
var audioIndex=Math.floor(Math.random() * (collection.length));
var audio=collection[audioIndex];
audio.play();
// you weren't saving off the index when it changes songs
loadedIndex = audioIndex;
setTimeout(playLooped,audio.duration*1000);
}
// change volume
function changeVolume(e) {
var value = Number(e.target.value)
collection[loadedIndex].volume = value/100;
e.target.nextElementSibling.childNodes[0].nodeValue = value + '%';
}
// the songs to be played!
init([
'http://popsplit.us/assets/music/1.mp3',
'http://popsplit.us/assets/music/2.mp3'
]);
<body>
<label for="range">Volume</label>
<input type="range" oninput="changeVolume(event)" id="range" min="0" max="100" />
<span class="output-volume">50%</span>
</body>
您可以使用「格式代碼」按鈕的方式('{}')把你的問題中的代碼。另外,請爲每個問題選擇一個問題。 =) – Ryan
好的,我會照着指示去做。 –