我在Chrome上使用Audio API發佈了奇怪的錯誤(SYNTAX_ERR:DOM異常12)。我第一次嘗試Audio Api,並且做了Kyle Nau的教程(幾次)(http://www.youtube.com/watch?v=1wYTkZVQKzs)。當我用簡單的MP3播放代碼時,所有聲音都可以正常播放,但是當我嘗試從同一教程中添加音量控制區塊時,只會播放新對象創建列表中的最後一個聲音。首先播放兩首節目「SYNTAX_ERR:DOM例外12」。我檢查了mp3和更改聲明的位置=同樣的不好的影響。取消音量控制,並再次播放罰款。在這個教程中一切都很好。Web Audio Api問題(DOM異常12)
試驗表明,問題的衝擊片雷管時取消註釋這一部分:
playSound.connect(this.gainNode);
this.gainNode.connect(audioContext.destination);
我不明白爲什麼這個錯誤是appers。
這裏的代碼。這是正常的工作變種(我標記問題的地方有評論):
function Sound(source, level) {
if (!window.audioContex) {
audioContext = new webkitAudioContext;
};
var that = this;
that.source = source;
that.buffer = null;
that.isLoaded = false;
// that.gainNode = audioContext.createGain();
//如果(水平!){
// that.gainNode.gain.value = 1;
//}否則{
// that.gainNode.gain.value =水平;
//};
var getSound = new XMLHttpRequest();
getSound.open("GET",that.source,true);
getSound.responseType = "arraybuffer";
getSound.onload = function() {
audioContext.decodeAudioData(getSound.response,function(buffer) {
that.buffer = buffer;
that.isLoaded = true;
});
};
getSound.send();
};
Sound.prototype.play = function(){
if(this.isLoaded === true) {
var playSound = audioContext.createBufferSource();
playSound.buffer = this.buffer;
// playSound.connect(this.gainNode);
// this.gainNode.connect(audioContext.destination);
playSound.connect(audioContext.destination);
playSound.noteOn(0);
};
};
// Sound.prototype.setVolume =函數(水平){
// this.gainNode.gain.value =水平;
//};
var laserSound = new Sound("sound/laser.mp3");
var dropSound = new Sound("sound/drop.mp3");
var pickupSound = new Sound("sound/pickup.mp3");
// laserSound.setVolume(.1);
window.addEventListener("keydown", onKeyDown);
function onKeyDown(event) {
switch (event.keyCode) {
//Z
case 90:
laserSound.play();
break;
//X
case 88:
dropSound.play();
break;
//C
case 67:
pickupSound.play();
break;
};
};
你有沒有找出發生了什麼事?所選答案確實沒有任何幫助。 – Vince 2013-03-25 01:46:58