簡體   English   中英

需要幫助找出音頻的語法錯誤

[英]Need help figuring out syntax error with audio

我有以下代碼:

var soundManager = {
    var _explode = new Audio('/Content/sounds/explosion.ogg');

    var _coin = new Audio('/Content/sounds/coin.ogg');
    this.play = function (name){
        switch(name){
            case "explosion":
                _explode.play();
                break;
            case "coin":
                _coin.play();
                break;
        }
    };
};

Chrome說我在定義_explode的第二行有一個錯誤。 語法錯誤是什么? 我正在嘗試進行設置,因此可以調用soundManager.play(nameOfSound)使其播放ogg文件。

謝謝。

-缺口

就像@SayemAhmed所說的那樣,您創建對象文字的語法是錯誤的。 他的回答是正確的。

這是我首選的方式,將_explode_coin “ true” _coin私有:

var soundManager=(function(){
  var _explode=new Audio('/Content/sounds/explosion.ogg');
  var _coin=new Audio('/Content/sounds/coin.ogg');
  return {
    play:function(name){
      switch(name){
        case "explosion":
          _explode.play();
          break;
        case "coin":
          _coin.play();
          break;
      }
    }
  };
})();

現在,不僅無法訪問_explode_coin ,而且在使用諸如Google Closure Compiler之類的JS縮小器時,您還可以獲得更大的“壓縮”大小,因為所有_explode_coin都將被最小化。

您不能以這種方式在對象文字中編寫語句。 試試以下-

var soundManager = {
    _explode: new Audio('/Content/sounds/explosion.ogg'),
    _coin: new Audio('/Content/sounds/coin.ogg'),

    play: function (name){
        switch(name){
            case "explosion":
                this._explode.play();
                break;
            case "coin":
                this._coin.play();
                break;
        }
    }
}

要稍后使用,可以使用以下內容-

soundManager.play('explosion');
soundManager.play('coint');

您可以按照@Passerby的建議進一步改進代碼-

var soundManager = (function () {
    var _explode = new Audio('/Content/sounds/explosion.ogg');
    var _coin = new Audio('/Content/sounds/coin.ogg');

    return {
        play: function (name) {
            switch (name) {
                case "explosion":
                    _explode.play();
                    break;
                case "coin":
                    _coin.play();
                    break;
            }
        };
    };
})();

通過這種方式使用閉包 ,只有play方法可以訪問_explode_coin變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM