2017-01-11 6 views
0

すべては、更新機能を除いて、働いている私はvar playerを元に戻すとき、それを認識していない定義されていません。フェイザーは// Javascriptを//プレイヤーが

"Uncaught ReferenceError: player is not defined"

(アイムまた、いないことを確認アニメーション用)(マリオはプレイヤーである、それはマリオのレベルです)。ここ

は私のコードは次のとおりです。

var SandBox = { 

    preload:function(){ 

     //this.game 
     console.log("preload Sand Box"); 

     this.game.load.image('platform', 'assets/platform.png'); 
     this.game.load.spritesheet('mario', 'assets/mario.png', 32, 32 , 12); 
     this.game.load.image('coinbox', 'assets/coinbox.png'); 
    }, 

    create:function(){ 
     console.log("create Sand Box"); 

     var imageHeight = this.game.cache.getImage("platform").height; 
     this.game.physics.startSystem(Phaser.Physics.ARCADE); 

     var worldHeight = this.game.world.height; 


     var ground = this.game.add.sprite(0, worldHeight - imageHeight, 'platform'); 
     var platform = this.game.add.sprite(250, 285, 'platform'); 
     var platform = this.game.add.sprite(-250, 145, 'platform'); 
     var platform = this.game.add.sprite(280, 285, 'coinbox'); 
     var player = this.game.add.sprite(32, 100, 'mario'); 

     this.game.physics.enable(ground); 
     this.game.physics.enable(platform); 
     this.game.physics.arcade.enable(player); 

     player.frame = 5; 
     ground.body.immovable = true; 
     platform.body.immovable = true;   
     player.body.bounce.y = 0.2; 
     player.body.gravity.y = 300; 
     player.body.collideWorldBounds = true; 


     player.animations.add('left', [0, 1, 2, 3], 10, true); 
     player.animations.add('right', [5, 6, 7, 8], 10, true); 

    }, 

    update:function(){ 
     console.log("update Sand Box"); 
     this.game.physics.arcade.enable(player); 

     var hitPlatform = this.game.physics.arcade.collide(player, ground); // << THESE FUNCTIONS 
    } 


} 
+0

'player'が範囲外です。関数の外で宣言してください。 – Xufox

+0

私は申し訳ありませんが、私はどのように関数の外でそれを宣言するか分からない。私はそれを置く必要がある行を私に教えてもらえますか? – Neels

答えて

0

スニペットでプレーヤーの10はそれがである関数にローカルであるサンドボックスのプレーヤー外のため(varで)宣言を移動します:。

var player; 
var sandbox = { 
    create: function() { 
     //... skipping lines ... 
     player = this.game.add.sprite(32, 100, 'mario'); 
    }, 
    Update: function() { 
      //use player here 
      var hitPlatform = this.game.physics.arcade.collide(player, ground); // << THESE FUNCTIONS 

    } 
}; 

それともオブジェクトの一部ます

var sandbox = { 
     create: function() { 
      //... skipping lines ... 
      this.player = this.game.add.sprite(32, 100, 'mario'); 
     }, 
     Update: function() { 
      //... skipping lines ... 
      //use this.player here 
      var hitPlatform = this.game.physics.arcade.collide(this.player, ground); 
     } 
}; 
+0

ねえ! Uncaught TypeError:未定義のプロパティ 'hasOwnProperty'を読み取ることができません – Neels

+0

- コード内にそのメソッドへの呼び出しが表示されないので、Phaserコードにあると思われます。別の例を作成することができない場合(例えば、[plunker](http://plnkr.co)、[codepen](http://codepen.io)または[SO snippet ](https://stackoverflow.blog/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/)) –

関連する問題