2013-07-30 51 views
0

編輯*我這樣做:如何將此代碼應用到我的音樂

if (vol > 0) { 
    vol -= 0.05; 
    document.getElementById("introMusic").volume = vol; 
    } 

我得到這個錯誤:未捕獲的錯誤:IndexSizeError:DOM異常1個preGameContentObject.js:102 (匿名函數)。它降低了聲音,直到它很低,然後繼續玩。

我從來沒有用javaScript做音頻,我很喜歡noob。這個問題幾乎令人尷尬。我在這個網站上發現了這個很棒的功能,爲我的pong遊戲淡出了我的開場曲。

我開始了音樂這個功能:

setUpGame: function() { 
     this.setUpPaddles(); 
     this.setUpBall("left"); 
     preGameContent.getMouseHover(); 
     preGameContent.drawButtons(); 
     preGameContent.getMouseClick(); 
     document.getElementById('introMusic').play(); 
    }, 

那是最好的做法?有用。

我想知道如何將此功能應用到我的代碼:

// Initial volume of 0.20 
// Make sure it's a multiple of 0.05 
var vol = 0.20; 
var interval = 200; // 200ms interval 

var fadeout = setInterval(
    function() { 
    // Reduce volume by 0.05 as long as it is above 0 
    // This works as long as you start with a multiple of 0.05! 
    if (vol > 0) { 
     vol -= 0.05; 
     audio.setVolume(vol); 
    } 
    else { 
     // Stop the setInterval when 0 is reached 
     clearInterval(fadeout); 
    } 
    }, interval); 

我知道在哪裏可以調用它,因爲我有一個「如果玩遊戲按鈕點擊 - 開始遊戲」類型的功能作品,我會彈出它。我在哪裏可以參考我的「introMusic」元素ID?謝謝!

回答

0

我去這個,而不是因爲它有沒有錯誤(這需要稍微重構):

function fadeVolume(volume, callback) 
        { 
         var factor = 0.02, 
          speed = 50; 
         if (volume > factor) 
         { 
          setTimeout(function(){ 
           fadeVolume((document.getElementById("introMusic").volume -= factor), callback);   
          }, speed); 
         } else { 
          (typeof(callback) !== 'function') || callback(); 
         } 
        } 
        fadeVolume(document.getElementById("introMusic").volume, function(){ 
         console.log('fade complete'); 
         document.getElementById("introMusic").pause(); 
         document.getElementById("introMusic").currentTime = 0; 
        }); 

要停止我用.pause();音頻和復位當前的時間,因爲.stop();沒有工作。有誰知道爲什麼?謝謝。

相關問題