万年素人からHackerへの道

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

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

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