我发现如果我将一个Sprite(带有inputEnabled = true)添加到一个组并且不将该组添加到舞台上,我仍然可以与Sprite交互(尽管它没有显示)。
var group = App.phaser.add.group(null, null, false, false);
var bmd = App.phaser.add.bitmapData(100, 100);
bmd.ctx.beginPath();
bmd.ctx.rect(0, 0, 100, 100);
bmd.ctx.fillStyle = '#ff9900';
bmd.ctx.fill();
var sprite = App.phaser.add.sprite(0, 0, bmd);
group.addChild(sprite);
// group.visible = false;
sprite.x = 100;
sprite.y = 100;
sprite.inputEnabled = true;
sprite.input.useHandCursor = true;
舞台完全空白(这很好)。但当我将鼠标移到左上角时,我看到一个鼠标光标(任何添加的事件处理程序也会响应)。 阻止此形式发生的唯一方法是将组的可见性设置为false,但这显然不是最佳解决方案。 我做错了什么,或者这是Phaser的一个错误?
答案 0 :(得分:1)
精灵不必在显示列表上以便交互,他们只需要在它们上设置'inputEnabled'。这通常用于允许您创建“隐形”命中区域。
如果您希望忽略精灵输入,可以拨打sprite.input.stop()
并根据需要将其重新启用start
。
另外请使用Group.add
,否则精灵不会被赋予z值,在组中不按顺序抛出。