万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・寄付お願いします
    YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
    BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
    c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1

FlaskとCocos2d-html5-v2.2.3 の連携でパスで変更する場所

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のパスも変えた。