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