-3

色付きの正方形の6x6グリッドを含むEnchantJSを使用してHTML5/JavaScriptゲームを作成しようとしています。表示する画像を1つ取得しましたが、すべての画像を表示するための36x4行のコードではなく、すべてを関数に移動したいと思いました。コードは62行目で壊れていthis.addChild(block);ます。なぜこれが機能しないのか理解できないようです。私は過去数日間、関数とは何か、関数間で情報を呼び出す方法について読んでいました。何が間違っているのかわからず、検索しても答えが見つかりません。私は純粋にJavaとC++のバックグラウンドを持っているので、構文を台無しにしていて、何かを理解していないと思います。

enchant();

window.onload = function() {

    /*
     *  Game width and height.
     *  Note: Game scale is half so actual width=width/2 and 
     *  actual heigh it height/2.
     */
    var game = new Game(1280,768);

    /*
     *  Game Preload Vars
     */
    game.preload('res/bg2x.png',
     'res/block.png');

    game.fps = 30;
    game.scale = 0.5;

    game.onload = function() {

      console.log("Game Loaded");
      var scene = new SceneGame;
      game.pushScene(scene);

    }

    game.start();
    window.scrollTo(0, 0);

    var SceneGame = Class.create(Scene, {

      initialize: function() {

        var game, bg;
        Scene.apply(this);
        game = Game.instance;

        // Background
        bg = new Sprite(1280,768);
        bg.image = game.assets['res/bg2x.png'];

        // Populate Screen
        this.addChild(bg);

        gridBuilder(500,75);

      }

    });

    var gridBuilder = function(x,y) {

      this.x=x;
      this.y=y;

      block = new Block;
      block.x = x;
      block.y = y;
      this.block = block;

      this.addChild(block); // THIS IS WHERE THE ERROR IS OCCURING.

    };

    var Block = Class.create(Sprite, {

        // The player character.     
        initialize: function() {
         // 1 - Call superclass constructor
         Sprite.apply(this,[100, 100]);
         this.image = Game.instance.assets['res/block.png'];
         // 2 - Animate
         this.animationDuration = 0;
         this.addEventListener(Event.ENTER_FRAME, this.updateAnimation);
        },

        updateAnimation: function (evt) {        
          this.animationDuration += evt.elapsed * 0.001;       
          if (this.animationDuration >= 0.25) {
              this.frame = (this.frame + 1) % 4;
              this.animationDuration -= 0.25;
          }
        },

    });

}
4

1 に答える 1

1

gridBuilder関数であり、それ以上のものではありません。方法はありませんaddChildaddChildで機能する理由SceneGameは、それSceneGameによって作成されたものであり、本質的にメソッドが含まれてClass.createいると思います。クラスを作成するのと同じ方法で作成するaddChildか、実際にやりたいことを再考します。いずれにせよ、あなたがしていることは足し合わないので、JSが実際に何を達成することを期待しているのかを考える必要があります。gridBuilderSceneGamegridBuilder

于 2013-02-13T15:24:47.313 に答える