解决Cocos2d-JS变量命名冲突的方法!

初次发贴,求支持!

问题如下: 我们通常喜欢每个场景都单独写一个js文件,这样看起来容易管理一些. 但是文件多了以后变量命名问题就出来了.
比如: 我的两个场景中都声明了 var BgLayer = cc.Layer.extend({});
同时,还声明了var HelloWorldScene = cc.Scene.extend({});

显示这样的命名是我们希望的, 我们并不希望 因为命名冲突问题而去将就命名,命名成 BgLayer1,BgLayer2…

问题来了,我们如何能够保证每个文件中的命名互相独立而不会互相影响如BgLayer, 同时又能让想要让其他文件知道的对象能够共享出来如HelloWorldScene可能会在另一个场景中调用进行切换.

解决方案如下:通过js的命名空间来解决.
第一步: 在我们的main.js中声明一个全局的命名空间对象如: var Andrew = {};

第二步: 在每一个希望独立的js文件中 用如下代码将我们的代码包装起来:
(
//括号里边是我们原来的代码, 可以完全不用改动.

//在最后将我们希望共享出来的对象添加到命名空间对象中去:
Andrew.HelloWorldScene = HelloWorldScene;

)(); //js的闭包原理.

第三步: 那些共享出来的变量的访问方式变成:Andrew.HelloWorldScene这样的方式. 类似Java中的包的样子,同时与IOS中添加命名前缀的方式也很像.用起来非常方便.
如: var firstScene = new Andrew.HelloWorldScene();

以上即可保证每个js文件中的变量最小范围内的冲突问题.

:2:自己抢一个

请问这个方法在Creator里也适用吗?