Cocos2d-html5-v2.2.3 を使った際に、Flaskを使った時にjsファイルのパスがそのままで出来ない。
僕は、「cocos2d-html5」のフォルダをFlaskのapp.pyの配下の「template」
の下へ追加している。
※この構成でいいかはわからないので正攻法かは保証しませんが・・・
なので、app.pyへは
app = Flask(__name__, #template_folder=os.path.join(PROJECT_PATH, 'www/templates'), static_folder=os.path.join(PROJECT_PATH, 'templates/cocos2d-html5') )
のように記述して、
「cocos2d-html5」へアクセスがstaticフォルダとしてのアクセスとなる。
よって、cocos2d.jsには、
・cocos2d.js
(function () { // cocos2d-html5 is static directory of app.py var STATIC_PATH = 'cocos2d-html5'; var d = document; var c = { COCOS2D_DEBUG:2, //0 to turn debug off, 1 for basic debug, and 2 for full debug box2d:false, chipmunk:false, showFPS:true, frameRate:60, //loadExtension:false, loadExtension:true, renderMode:0, //Choose of RenderMode: 0(default), 1(Canvas only), 2(WebGL only) tag:'gameCanvas', //the dom element to run cocos2d on //engineDir:'../cocos2d/', //engineDir:'./Platform/HTML5/cocos2d/', engineDir: STATIC_PATH + '/Platform/HTML5/cocos2d/', //SingleEngineFile:'', appFiles:[ /*'./src/resource.js', './src/MainLayer.js', './src/GameOver.js',*/ STATIC_PATH + '/src/resource.js', STATIC_PATH + '/src/MainLayer.js', STATIC_PATH + '/src/GameOver.js', ] };
のようにSTATIC_PATH定数(JSなので定数と言わないが・・)を「cocos2d-html5」として結合するように記載した。
リソースを読み込むこのファイルには、
・resource.js
//var resource = "res/"; var resource = "cocos2d-html5/res/"; var dirArt = resource + "art/"; var dirSounds = resource + "sounds/"; var s_player = dirArt + "player.png"; var s_monster = dirArt + "monster.png"; var s_projectile = dirArt + "projectile.png"; var s_bgMusic = dirSounds + "background-music.mp3"; var s_bgMusicOgg = dirSounds + "background-music.ogg"; // caf is not support Cocos2d-html5-v2.2.3 version //var s_bgMusicCaf = dirSounds + "background-music.caf"; var s_shootEffect = dirSounds + "pew-pew-lei.mp3"; var s_shootEffectOgg = dirSounds + "pew-pew-lei.ogg"; var s_shootEffectWav = dirSounds + "pew-pew-lei.wav";
のようにした。
あと、あまり本体のパスは弄りたくなかったのだが、「jsloader.js」のmain.jsへのパスも変更した。
cocos2d-html5/Platform/HTML5の中にある
・jsloader.js
var loaded = 0; var que = engine.concat(c.appFiles); //que.push('main.js'); // for flask static path que.push('cocos2d-html5' + '/main.js');
もちろん、index.htmlも変更がいる。
・index.html
<link rel="icon" type="image/GIF" href="{{url_for('static', filename='res/favicon.ico') }}"/>
のようにファビコンや、
<script src="{{url_for('static', filename='cocos2d.js') }}"></script>
のようにcocos2d.jsのパスも変えた。