[英]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.