未定义Phaser//Javascript//Player
一切正常,除了更新功能,当我放回var播放器时,它无法识别: 未捕获引用错误:未定义播放器 我也不确定动画中的马里奥是否是玩家,这是马里奥的级别 这是我的密码:未定义Phaser//Javascript//Player,javascript,var,phaser-framework,Javascript,Var,Phaser Framework,一切正常,除了更新功能,当我放回var播放器时,它无法识别: 未捕获引用错误:未定义播放器 我也不确定动画中的马里奥是否是玩家,这是马里奥的级别 这是我的密码: var SandBox = { preload:function(){ //this.game console.log("preload Sand Box"); this.game.load.image('platform', 'assets/platform.png');
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
}
}
代码段中的播放器是其所在函数的本地。将玩家的声明移出沙箱:
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
}
};
玩家不在范围内。在函数外声明它。对不起,我不知道如何在函数外声明它。你能告诉我该放哪条线吗?嘿!它正在工作,但还有另一个错误:UncaughtTypeError:无法读取undefinedokay的属性“hasOwnProperty”-我在代码中没有看到对该方法的任何调用,因此我怀疑它在Phaser代码中。。。这可能是您在单独的问题中提出的问题,除非您可以创建另一个示例,例如,在中,或者甚至是
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);
}
};