Все функции, которые я создал, дают эту ошибку.
Некоторое время назад я запустил игру-стрелялку.
Когда я начал это, я использовал Phaser 2.
Я решил продолжить разработку и надеюсь закончить эту игру.
После того, как Phaser 3 был полностью выпущен, я подумал, что это будет хороший момент для миграции и изучения различий.
Я попробовал пару решений.
1. очень уродливое решение, я включил это во все параметры при вызове функции. Я уверен, что это не способ сделать это.
2. Я добавил все пользовательские функции в список сцен в конфигурации.
var config = {
type: Phaser.AUTO,
width: 1050,
height: 900,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 0 },
debug: true
}
},
scene: {
preload: preload,
create: create,
update: update,
render: render,
stopBall: stopBall,
spawnBalls: spawnBalls,
getBallType: getBallType,
getNewBall: getNewBall,
getGridPos: getGridPos,
clearConnectedBalls: clearConnectedBalls
}
};
var game = new Phaser.Game(config);
function preload() {
this.load.image('arrow', 'assets/img/arrow.png');
this.load.image('pokeball', 'assets/img/pokeballs/pokeball.png');
this.load.image('greatball', 'assets/img/pokeballs/greatball.png');
this.load.image('masterball', 'assets/img/pokeballs/masterball.png');
this.load.image('premierball', 'assets/img/pokeballs/premierball.png');
this.load.image('safariball', 'assets/img/pokeballs/safariball.png');
this.load.image('ultraball', 'assets/img/pokeballs/ultraball.png');
}
function create() {
// Fuction called after 'preload' to setup the game
ballGrid = this.add.group();
ballGrid.enableBody = true;
ballsToShoot = [];
levelGridArray = {...}
}
//active mouse
this.input.mouse.capture = true;
getNewBall(this);
}
function update() {
// Function called 60 times per second
this.physics.world.collide(currentBall, ballGrid,function(){
stopBall(this, currentBall)
})
//aiming arrow
//shooting pokeball
}
function stopBall(test, currentBall) {
currentBall.body.velocity.x = 0
currentBall.body.velocity.y = 0
ballGrid.add(currentBall)
getGridPos(test, currentBall.x, currentBall.y);
currentBall.body.immovable = true;
getNewBall(this)
}
function getNewBall() {
if (typeof currentBall !== 'undefined') {
currentBall.destroy()
currentBall = secondBall;
currentBall.x = 8 * 60;
currentBall.y = 14 * 60;
secondBall.destroy()
} else {
currentBall = this.physics.add.sprite(8 * 60, 14 * 60, getBallType())
currentBall.disableBody(false, false);
}
secondBall = this.physics.add.sprite(1 * 60, 14 * 60, getBallType())
}
Функция stopBall имеет параметр this.
Я удалил параметр для getNewBall (), чтобы показать, где ошибка показывает свое лицо.
http://cihantasdelen.com/bubble2/
Здесь вы найдете игру.
Я надеюсь, что кто-то может объяснить мне, почему возникает эта ошибка.