気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【メモ】楽しいenchant.js-part12

クラスがサクサク作れるようになった気がする

脳内で、コードのテンプレ化ができたようで、 なにも参照せずに記述できるようになってきた。

enchant();

var Player = enchant.Class.create(enchant.Sprite, {
    initialize: function(x, y) {
        enchant.Sprite.call(this, 16, 16);
        this.x = x;
        this.y = y;
        this.image = game.assets['any.png'];
        this.anim = [0, 1, 2, 1];
        this.tick = 0;

        game.rootScene.addEventListener('touchstart', function(e) {
            this.touched = true;
            this.x = Math.floor(e.x);
        });

        game.rootScene.addEventListener('touchend', function(e) {
            this.touched = false;
            this.x = Math.floor(e.x);
        });

        game.rootScene.addEventListener('touchmove', function(e){
            this.x = Math.floor(e.x);
        });


        this.addEventListener('enterframe', function(){
            // 各フレームごとの処理
            this.tick++;
            if(game.frame % 16 == 0) {
               this.frame = this.anim[this.tick%4];
            }
             
        });
        game.rootScene.addChild(this);

    },

    remove: function() {
        game.rootScene.removeChild(this);
    }
});

window.onload = function() {
    game = new Game(320, 320);
    game.fps = 16;
    
    game.preload('any.png');

    game.onload = function() {
        player = new Player(20,20);
        
        // player.key = game.frame;
        // player_list[player.key] = player;
        // この場合、for(p in player_list){ cnt++ }のような感じでで要素数を算出
    }

}
  • たいていのゲームクラスはSpriteを継承
  • フレームごとにキャラ画像を切り替え
  • タッチ中かどうかは、touchstart, touchendそれぞれでフラグをセットすることで判断する
  • 複数のキャラクターを管理したい場合、game.frameを識別子としてオブジェクトに保持し、配列に格納する

どうでもいい話ですが・・・

夢の中で、誰かとラジアンについて話していた気がする。

頭の整理というやつだろうか。