project.json
cocos2d-jsを使ってみようとCocos2d-JS Download Builderからファイルをダウンロードすると、project.jsonというファイルが入っている。中身は
project.json
{
"debugMode" : 1,
"frameRate" : 60,
"id" : "gameCanvas",
"renderMode" : 1,
"jsList" : []
}
こうなっている筈。
調べてみればそれぞれが何の設定なのかは公式に書いてあるのだが、ブラウザゲームを作ろうとした場合、通常は何かしらのサーバサイドのフレームワークと組み合わせることが多く、「エントリーポイントと同一ディレクトリにproject.jsonを置いておく」というのは運用しづらい。直接初期化したいが、その方法は書いていない。
直接初期化したい
困ったときにはソースコードを見よう。ということでcocos2d-js-v3.8.jsをproject.jsonで検索すると、この辺りで読み込みを行っているようだ。
cocos2d-js-v3.8.js
if (document["ccConfig"]) {
self.config = _init(document["ccConfig"]);
} else {
try {
var cocos_script = document.getElementsByTagName('script');
for(var i=0;i<cocos_script.length;i++){
var _t = cocos_script[i].getAttribute('cocos');
if(_t === '' || _t){break;}
}
var _src, txt, _resPath;
if(i < cocos_script.length){
_src = cocos_script[i].src;
if(_src){
_resPath = /(.*)\//.exec(_src)[0];
cc.loader.resPath = _resPath;
_src = cc.path.join(_resPath, 'project.json');
}
txt = cc.loader._loadTxtSync(_src);
}
if(!txt){
txt = cc.loader._loadTxtSync("project.json");
}
var data = JSON.parse(txt);
self.config = _init(data || {});
} catch (e) {
cc.log("Failed to read or parse project.json");
self.config = _init({});
}
}
これはわかりやすい。documentにccConfigがあればそっちを使うようになっている。
project.jsonを使わずに初期化
cocos2d-jsの読み込み前にdocument.ccConfigを定義すればよいのだから、エントリーポイントがindex.phpなら
index.php
<script>
document.ccConfig = {
"debugMode" : 1,
"showFPS" : true,
"frameRate" : 60,
"id" : "gameCanvas",
"renderMode" : 0,
"jsList" : []
}
</script>
<script src="./cocos2d-js-v3.8.js" charset="UTF-8"></script>
こんな感じにすれば良い。