我正在使用CreateJS库构建游戏。在当前版本中,我在Global范围中保存了很多变量和对象,这非常简洁,并且使各种扩展类可以轻松地重用SpriteSheets等。
我正在寻找一种不使用全局范围的方法。显然,我可以将spritesheet或包含spritesheet的类作为参数传递给我制作的所有displayobjects,但我希望有更聪明的方法来做到这一点。
有关如何实现这一目标的任何建议或提示都会有所帮助。
答案 0 :(得分:0)
您可能需要使用模块:
var main = (function(){
var myPrivateVal1 = "Something";
var myPrivateVal2 = 56;
var myVeryPrivateVal = 3;
//Return only what you want to expose
return {
myPublicVal: 123,
getVal1: function(){
return myPrivateVal1;
},
getVal2: function(){
return myPrivateVal2;
},
doCalculation: function(){
return myVeryPrivateVal * myPrivateVal2;
}
}
})();
console.log(main.myPublicVal); //123
console.log(main.myPrivateVal1); //undefined
console.log(main.myPrivateVal2); //undefined
console.log(main.myVeryPrivateVal); //undefined
console.log(main.getVal1()); //Something
console.log(main.getVal2()); //56
console.log(main.doCalculation()); //168
这里有一个全局变量 main ,它是暴露您需要公开的内容的模块,但仍会跟踪所需的变量。
参见this JSFiddle。