我目前正在编写一个小 Flash 游戏,但遇到了一些问题:
我有一个精灵,我们称之为gameBoard,它包含一个背景图像和许多其他小精灵。我的问题是当游戏板在自身上放置一个点击监听器时,如果我碰巧点击了游戏板中包含的众多精灵之一,localX 和 localY 就是其中一个小精灵。
所以,我的问题是:
如何获取我的点击相对于事件侦听器的坐标?
我目前正在编写一个小 Flash 游戏,但遇到了一些问题:
我有一个精灵,我们称之为gameBoard,它包含一个背景图像和许多其他小精灵。我的问题是当游戏板在自身上放置一个点击监听器时,如果我碰巧点击了游戏板中包含的众多精灵之一,localX 和 localY 就是其中一个小精灵。
所以,我的问题是:
如何获取我的点击相对于事件侦听器的坐标?
很确定这就是你要问的。
这是一个相当常见的问题 - 您可以使用 event.currentTarget 属性而不是 event.target 来引用您添加事件侦听器的对象。
仅触发游戏板的鼠标事件:
[gameboard_instance_name].mouseChildren = false;
//[gameboard_instance_name].addEventListener(...);
所以你在某个地方附加了你的点击处理程序:
gameboard.addEventListener( MouseEvent.CLICK, clickHandler );
然后在您的处理程序中,您可以执行以下操作:
function clickHandler( event:MouseEvent ):void
{
// First way use stage point and convert to gameboard
var stagePoint:Point = new Point( event.stageX, event.stageY );
var gameboardPoint:Point = gameboard.globalToLocal( stagePoint );
// Second way, use the mouse position on the gameboard
// making sure that you only use this handler with the above listener
event.currentTarget.mouseX;
event.currentTarget.mouseY;
}