Phaser 数组未在更新方法中定义

Phaser array not defined in update method

所以我正在使用 Phaser 框架创建一个 space 入侵者游戏,但我遇到了游戏对象数组的问题。敌人数组是正常的,我可以在 create 方法中做 console.log(enemies.length) 很好,但它说当我 运行 它时没有定义敌人。

 var game = new Phaser.Game(800, 600);
    var bgTile;
    var speed = 200;
var dropCnt = 100;

var box = function(options) {
    var bmd = game.add.bitmapData(options.length, options.width);
    bmd.ctx.beginPath();
    bmd.ctx.rect(0, 0, options.length, options.width);
    bmd.ctx.fillStyle = options.color;
    bmd.ctx.fill();
    return bmd;
};

var mainState = {
  preload: function(){
    //var music;
    //game.load.audio('sound1',['track01.mp3','track01.ogg']); // need to make this spce music
    game.load.image('bgTile', 'bgtile.jpg');
  },

  create: function(){
    lives = 3;
    //music = game.add.audio('sound1');
    //music.loopFull(1);
    this.cursor = game.input.keyboard.createCursorKeys();
    game.physics.startSystem(Phaser.Physics.ARCADE);
    game.world.enableBody = true;
    BGTile = starfield = game.add.tileSprite(0, 0, 800, 600, 'bgTile');
    game.physics.startSystem(Phaser.Physics.ARCADE);
    this.player = game.add.sprite(384, 550, box({
            length: 32,
            width: 32,
            color: '#FFFFFF'
        }));
        this.enemy = game.add.group();
        this.enemy.enableBody = true;
        var enemies= [];
        for(var i = 0; i < 8; i++){
          for(var j = 0; j < 8; j++){
            enemies.push(this.enemy.create(i*75+100,j*30+20, box({
              length: 32,
              width: 16,
              color: '#FF0000'
            })));

          }
        }

        var bullets= [];
        this.bullet = game.add.group();
        this.bullet.enableBody = true;
        this.player.body.immovable = true;
    this.enemy.body.immovable = true;
  },

  update: function(){
    console.log(enemies.length);
    starfield.tilePosition.y += 2;
    this.player.body.velocity.y = 0;
        this.player.body.velocity.x = 0;
    if (this.cursor.left.isDown) {
              this.player.body.velocity.x -= speed;
          } else if (this.cursor.right.isDown) {
              this.player.body.velocity.x += speed;
          }
    dropCnt--;

    if(dropCnt === 0){
      dropCnt = 100;
      for(var i = 0; i < enemies.length;i++){
        this.enemies.body.x -= 8;
        console.log("test");
      }
    }
  }
};

game.state.add('main', mainState);
game.state.start('main');

这里DEMO
enemies 数组在 mainState.create() 内定义,因此对象 mainState
内的另一个函数无法访问它 为了访问,您必须将敌人数组定义为对象成员

var mainState = {
  enemies:[],
  ....
  ...
}

所以现在要访问你必须做的敌人

mainState.enemies.push(....)
mainState.enemies.pop()