【发布时间】:2017-02-24 23:27:10
【问题描述】:
在我的 update() 函数中,我使用 pointerOver() 来检测指针何时位于精灵上方。这通常工作正常。但是,如果我碰巧在拖动另一个精灵,pointerOver() 函数总是返回 false。
我想我可以通过获取指针的位置并将其与我的精灵的位置和边界进行比较来解决这个问题,但指针位置始终是 (-1, -1)。
这里有一些示例代码来演示这个问题:
var game = new Phaser.Game( 800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update, render: render });
var triangle;
var square;
var isOver;
var pointerX;
var pointerY;
function preload()
{
game.load.image( 'triangle', 'assets/triangle.png' );
game.load.image( 'square', 'assets/square.png' );
}
function create()
{
triangle = game.add.sprite( 100, 100, "triangle" );
triangle.inputEnabled = true;
triangle.input.enableDrag( false, true );
square = game.add.sprite( 100, 200, "square" );
square.inputEnabled = true;
}
function update()
{
isOver = square.input.pointerOver() ? "Yes" : "No";
}
function render()
{
game.debug.text( "Mouse over square: " + isOver, 200, 100 );
game.debug.text( "Pointer: (" + game.input.pointer1.x + ", " + game.input.pointer1.y + ")", 200, 116 );
}
我发现这篇关于使用精灵的 input.priorityID 的帖子:Phaser JS how to stop event Propagation(firing) from textButton.events.onInputDown event to game.input.onDown event?
使用priorityID修复了当三角形在正方形顶部并且三角形没有被拖动时,但是当它被拖动时问题仍然存在。
我如何检测指针何时在精灵上方,即使我正在拖动另一个精灵?
谢谢。
【问题讨论】:
标签: phaser-framework