重置game.input.onDown时使用哪个指针对象(即光标)
Which pointer object (i.e., cursor) to use when resetting game.input.onDown
我遇到了一个问题,我需要以与Phaser.Key.reset相同的方式重置game.input.onDown
事件。似乎这是可行的Phaser.Pointer.reset方法。不幸的是,似乎有一堆不同的潜在指针对象在相位器。输入类,我不确定我需要为game.input.onDown
使用哪一个,它说它"每次按下指针时都被调度"。我只是不确定该用哪个指针。有人能解释一下吗?
我想我实际上需要做这样的事情:
this.game.input.whicheverPointer.reset();
编辑:这是一个模拟我遇到的问题的例子。
下面是它的源代码:
var game = new Phaser.Game(800, 600, Phaser.CANVAS, "game", {preload: preload, create: create, update: update});
var dude;
var block;
var spacebar;
var gameOverText;
var gameOverCounter = 0;
var gameOverBool = false;
function preload () {
game.load.image("block", "assets/block.png");
game.load.image("dude", "assets/phaser-dude.png");
}
function create () {
dude = game.add.sprite(373, 760, "dude");
block = game.add.sprite(0, 505, "block");
game.physics.arcade.enable(dude);
game.physics.arcade.enable(block);
dude.body.collideWorldBounds = true;
dude.body.gravity.y = 200;
block.body.collideWorldBounds = true;
block.body.immovable = true;
block.body.velocity.x = 100;
block.body.bounce.x = 1;
spacebar = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
var jumpOrTryAgain = function () {
if (gameOverBool === false) {
dude.body.velocity.y = -250;
// If you open up your JS / error console, you'll see that
// this message gets printed an extra time each reset,
// when you click. The spacebar doesn't have this problem
// because of the `spacebar.reset()` call below.
console.log("down");
} else {
dude.destroy();
block.destroy();
gameOverText.destroy();
// Here, I can reset the spacebar, but I'm not sure what to do
// for the click / touch event, which keeps getting the jumpOrTryAgain
// callback added onto it.
spacebar.reset();
gameOverBool = false;
gameOverCounter = 0;
create();
}
};
game.input.onDown.add(jumpOrTryAgain);
spacebar.onDown.add(jumpOrTryAgain);
}
function update () {
function gameOver () {
if (gameOverCounter === 0) {
gameOverBool = true;
dude.body.velocity.y = 0;
dude.body.velocity.x = 0;
block.body.velocity.x = 0;
gameOverText = game.add.text(300, 200, "Game Over!", {fontSize: "16px", fill: "white"});
gameOverCounter += 1;
}
}
game.physics.arcade.collide(dude, block, gameOver);
}
正如你可以在我上面的评论中读到的,问题是点击/触摸事件不断获得jumpOrTryAgain
回调添加到自己,因为create
在你重置游戏时被递归调用。我需要一种方法来重置点击/触摸事件,类似于上面看到的spacebar.reset()
。
game.input.onDown
由鼠标和触摸输入触发。如果您需要在每次调用后重置它的回调,您可以使用game.input.onDown.addOnce()
(而不是game.input.onDown.add()
),以便在第一次运行后自动删除回调。
我所要做的就是实现一个简单的计数器,防止空格键和指针被重新分配,就像这样:
var game = new Phaser.Game(800, 600, Phaser.CANVAS, "game", {preload: preload, create: create, update: update});
var dude;
var block;
var spacebar;
var gameOverText;
var gameOverCounter = 0;
var gameOverBool = false;
var downCounter = 0;
function preload () {
game.load.image("block", "assets/block.png");
game.load.image("dude", "assets/phaser-dude.png");
}
function create () {
dude = game.add.sprite(373, 760, "dude");
block = game.add.sprite(0, 505, "block");
game.physics.arcade.enable(dude);
game.physics.arcade.enable(block);
dude.body.collideWorldBounds = true;
dude.body.gravity.y = 200;
block.body.collideWorldBounds = true;
block.body.immovable = true;
block.body.velocity.x = 100;
block.body.bounce.x = 1;
var jumpOrTryAgain = function () {
if (gameOverBool === false) {
dude.body.velocity.y = -250;
console.log("down");
} else {
dude.destroy();
block.destroy();
gameOverText.destroy();
gameOverBool = false;
gameOverCounter = 0;
create();
}
};
if (downCounter === 0) {
spacebar = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
game.input.onDown.add(jumpOrTryAgain);
spacebar.onDown.add(jumpOrTryAgain);
downCounter += 1;
}
}
function update () {
function gameOver () {
if (gameOverCounter === 0) {
gameOverBool = true;
dude.body.velocity.y = 0;
dude.body.velocity.x = 0;
block.body.velocity.x = 0;
gameOverText = game.add.text(300, 200, "Game Over!", {fontSize: "16px", fill: "white"});
gameOverCounter += 1;
}
}
game.physics.arcade.collide(dude, block, gameOver);
}
相关文章:
- Javascript:将函数指针放在对象中
- 我可以在HTML5画布中创建图形形状对象吗?以及当用户将鼠标悬停在形状上时如何将光标显示为指针
- 查找具有字段值的对象(这是一个指针)
- 如何使对象的函数或属性成为指向另一个对象函数的指针
- Parse.com / Javascript - 将用户对象ID字符串保存为用户指针
- Parse.com 云代码保存( )错误:“未捕获 尝试使用指向新的未保存对象的指针保存对象
- 对闭包内对象的赋值的行为类似于指针
- 解析 - JavaScript 指针查询,从指针返回解析对象的问题
- 如何获取具有指针字段的对象 ID 的记录
- 解析云代码在保存后返回指针而不是对象
- 在 Javascript 中的 parse.com 个对象中查询指针
- 指向对象的JS指针
- Parse.com正在查询包含指针数组的对象,该数组无法使用include
- Parse.com Cloud Code beforeSave()错误:"未捕获尝试用指向新的未保存对象的指针
- Parse.comJavascript API,查询包含指针列表的对象列表
- Javascript 变量作为对象指针
- Javascript:从指针修改对象
- 对象中的函数指针
- JQuery删除具有指针容差的大对象
- 对象指针突然变得未定义