javascript 音频淡出
javascript audio fade out
当我按下键盘上的 'Arrow Up' 按钮时,我希望我的音频淡出并停止。好像淡出,却又出现,永不停息。
music.html:48 未捕获的 IndexSizeError:无法在 'HTMLMediaElement' 上设置 'volume' 属性:提供的音量 (-0.1) 在外部范围 [0, 1].
我是Javascript的初学者。
这是我的代码。
HTML
<body>
<input type="text" size="3" value="1" id="numtext" style="font-size:500px" >
<audio id=1>
<source src=BGM/a.mp3>
</audio>
<audio id=2>
<source src=BGM/b.mp3>
</audio>
<audio id=3>
<source src=BGM/c.mp3>
</audio>
</body>
Javascript
<script language="JavaScript">
var interval
var timeout
document.onkeydown = function() {
if(event.keyCode == 38){
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
interval = setInterval(fade, 200);
return;
}
}
function fade() {
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
sounds.volume = sounds.volume - 0.1;
var timer = setTimeout(function() {
window.clearInterval(interval);
for(i=0; i<sounds.length; i++) sounds[i].pause();
for(i=0; i<sounds.length; i++) sounds[i].currentTime = 0;
}, 2000);
timeout = setTimeout(stopFade, 2000);
}
function stopFade() {
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
for(i=0; i<sounds.length; i++) sounds[i].pause();
for(i=0; i<sounds.length; i++) sounds[i].currentTime = 0;
sounds.volume = 1;
}
</script>
有什么建议吗?
您的淡入淡出功能需要检查其分配的音量是否在 0 和 1 之间。由于您只是将音量调低,因此您可以检查它是否大于 0。
var interval
var timeout
document.onkeydown = function() {
if(event.keyCode == 38){
interval = setInterval(fade, 200);
}
}
function fade() {
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
var newVolume = sounds.volume - 0.1;
// Check if the newVolume is greater than zero
if(newVolume >= 0){
sounds.volume = newVolume;
}
else{
// Stop fade
clearInterval(interval);
sounds.volume = 0;
sounds.pause();
sounds.currentTIme = 0;
}
}
我已经删除了这里不需要的代码。
当我按下键盘上的 'Arrow Up' 按钮时,我希望我的音频淡出并停止。好像淡出,却又出现,永不停息。
music.html:48 未捕获的 IndexSizeError:无法在 'HTMLMediaElement' 上设置 'volume' 属性:提供的音量 (-0.1) 在外部范围 [0, 1].
我是Javascript的初学者。
这是我的代码。
HTML
<body>
<input type="text" size="3" value="1" id="numtext" style="font-size:500px" >
<audio id=1>
<source src=BGM/a.mp3>
</audio>
<audio id=2>
<source src=BGM/b.mp3>
</audio>
<audio id=3>
<source src=BGM/c.mp3>
</audio>
</body>
Javascript
<script language="JavaScript">
var interval
var timeout
document.onkeydown = function() {
if(event.keyCode == 38){
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
interval = setInterval(fade, 200);
return;
}
}
function fade() {
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
sounds.volume = sounds.volume - 0.1;
var timer = setTimeout(function() {
window.clearInterval(interval);
for(i=0; i<sounds.length; i++) sounds[i].pause();
for(i=0; i<sounds.length; i++) sounds[i].currentTime = 0;
}, 2000);
timeout = setTimeout(stopFade, 2000);
}
function stopFade() {
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
for(i=0; i<sounds.length; i++) sounds[i].pause();
for(i=0; i<sounds.length; i++) sounds[i].currentTime = 0;
sounds.volume = 1;
}
</script>
有什么建议吗?
您的淡入淡出功能需要检查其分配的音量是否在 0 和 1 之间。由于您只是将音量调低,因此您可以检查它是否大于 0。
var interval
var timeout
document.onkeydown = function() {
if(event.keyCode == 38){
interval = setInterval(fade, 200);
}
}
function fade() {
var x = document.getElementById('numtext').value;
var sounds = document.getElementById(x);
var newVolume = sounds.volume - 0.1;
// Check if the newVolume is greater than zero
if(newVolume >= 0){
sounds.volume = newVolume;
}
else{
// Stop fade
clearInterval(interval);
sounds.volume = 0;
sounds.pause();
sounds.currentTIme = 0;
}
}
我已经删除了这里不需要的代码。