0

Enchant.js is not familiarly used, but since it using same OOP style like prototype.js i think i've got a chance to ask it here.

this is my main.js:

var DIR_LEFT  = 0;
var DIR_RIGHT = 1;
var DIR_UP    = 2;
var DIR_DOWN  = 3;

enchant();

window.onload = function () {
  game =  new Core(320, 320);

  game.preload(
              'res/map0.png',
              'res/chara0.png'
              );
  game.fps = 30;
  game.onload = function() {
    var sceneGame = new SceneGame();

    game.pushScene(sceneGame);

  }

  game.start();

  //main gameplay scene
  var SceneGame = Class.create(Scene, {
    initialize: function() {
      Scene.apply(this);
      var stage, map, player, label;

      stage  = new Group();
      map    = tileMap(game.assets['res/map0.png']); 

      player = new Player();
      label  = new Label("hi!");
      player.addEventListener(Event.ENTER_FRAME, this.update);

      this.player = player;
      this.map    = map;
      stage.addChild(map);
      stage.addChild(player);
      this.Elx = 1;
      this.label  = label; 

      this.addChild(stage);
      this.addChild(label); 

      var pad = new Pad();
      pad.y   = 220;
      this.addChild(pad);
    },

    update: function() {
      this.Elx = 2;
      console.log("Elx :" + this.Elx );
      console.log(this.player.x);

    }
  });

  var Player = Class.create(Sprite, {
    initialize: function() {
      Sprite.apply(this, [32, 32]);
      this.image = game.assets['res/chara0.png'];
      this.x = 2 * 16;
      this.y = 16;
      this.dir = DIR_DOWN;
      this.anim = [
        9, 10, 11, 10,
        18, 19, 20, 19,
        27, 28, 29, 28,
        0, 1, 2, 1];

       // Frame setting
       if (!game.input.up && !game.input.down && !game.input.right && !game.input.left) {
         this.age = 1;
         this.frame = this.anim[this.dir * 4 + (this.age % 4)];
       }
    },

     update: function (evt) {
     }
  });

}

initialize is the Enchant.js object constructor method,

the code above successfully returning the stage group child ( map and player) images on screen, but when i want to use on update SceneGame's method, the console returned 2 for the this.Elx but returning undefined error for this.player.x .

Why this is happening ?

any help are appreciated . thank you

dkotama
  • 33
  • 9

1 Answers1

0

thank you guys for your answer, so basically is my fault for lack of understanding about the Grouping method. So in the line i declared :

map    = tileMap(game.assets['res/map0.png']); 
this.map = map;
player = new Player();
this.player = player;
stage  = new Group();
stage.addChild(player);
stage.addChild(map);
map.addChild(stage);

and in the update i tried to call console.log(this.player) of course it wont work because the player inserted in scene as a child. I tried to change above line to :

map    = tileMap(game.assets['res/map0.png']); 
player = new Player();
stage  = new Group();
stage.addChild(player);
this.player = stage.childNodes[0];
stage.addChild(map);
this.map    = stage.childNodes[1];
map.addChild(stage);

above code succesfully return any property of this.player. So this is solved . thank you :)

dkotama
  • 33
  • 9