我是 Phaser 的新手,我正在尝试检测 Phaser3 中多个图像的点击。这对我来说已经成为一个由两部分组成的问题。 首先是检测对象上的单击,但即使我单击屏幕上的其他任何位置,也会触发单击处理程序。
第二部分是我在场景中有相同的多个图像,我想仅在单个函数内检测对每个图像的点击并检测哪个图像被点击。
这是我的代码:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f98991988a9c8bb9cad7cbcdd7c8" rel="noreferrer noopener nofollow">[email protected]</a>/dist/phaser-arcade-physics.min.js"></script>
<style media="screen">
canvas { display : block; margin : auto;}
</style>
</head>
<body>
<script>
var config = {
type: Phaser.CANVAS,
scale: {
mode: Phaser.Scale.ScaleModes.FIT,
parent: 'phaser-example',
autoCenter: Phaser.Scale.CENTER_BOTH,
width: 400,
height: 640
},
// width: 400,
// height: 640,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 10 }
}
},
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
var Bimages;
function preload ()
{
this.load.setBaseURL('http://localhost:3000');
this.load.image('sky', 'assets/skies/deepblue.png');
this.load.image('tube1', 'assets/myassets/ballSort/tube.png');
this.load.image('tube2', 'assets/myassets/ballSort/tube.png');
}
var numOfTestTubes = 5;
var storeTubes = [];
function create ()
{
ctx = this;
this.add.image(400, 300, 'sky').scaleY = 1.2;
var t1 = ctx.add.image(150, 300, 'tube1');
t1.scaleY = 0.5;
t1.scaleX = 0.5;
var t2 = ctx.add.image(220, 300, 'tube2');
t2.scaleY = 0.5;
t2.scaleX = 0.5;
t1.setInteractive();
t2.setInteractive();
t1.on('pointerdown', handleclick);
}
function update(){
}
function handleclick(pointer, targets){
console.log("clicked0",pointer);
}
</script>
</body>
</html>
有人可以帮我吗?
最佳答案
游戏对象上的pointerdown事件监听器与全局输入管理器上的pointerdown事件监听器不同。如果您改为执行 this.input.on('pointerdown', ...)
您将获得带有指针的回调,而且还会获得被单击的游戏对象的数组,其中包含一个空数组如果没有点击任何游戏对象。如果您需要注册对彼此重叠的输入对象的点击,则可以使用#setTopOnly 更改此行为。您可以检查对象相等性或针对某些预期属性(例如对象的名称或纹理键)。我将 stackblitz 与矩形链接起来,但了解它们的行为与图像的 hitbox 相同。
https://stackblitz.com/edit/phaser-so-global-input-manager?file=index.ts
关于javascript - 如何检测phaser3中图像的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63667506/