3

我目前正在编写一个小 Flash 游戏,但遇到了一些问题:

我有一个精灵,我们称之为gameBoard,它包含一个背景图像和许多其他小精灵。我的问题是当游戏板在自身上放置一个点击监听器时,如果我碰巧点击了游戏板中包含的众多精灵之一,localX 和 localY 就是其中一个小精灵。

所以,我的问题是:

如何获取我的点击相对于事件侦听器的坐标?

4

2 回答 2

1

很确定这就是你要问的。

在 AS3 中触发从子到父的事件

这是一个相当常见的问题 - 您可以使用 event.currentTarget 属性而不是 event.target 来引用您添加事件侦听器的对象。

仅触发游戏板的鼠标事件:

[gameboard_instance_name].mouseChildren = false;
//[gameboard_instance_name].addEventListener(...);
于 2013-09-10T14:47:57.453 回答
0

所以你在某个地方附加了你的点击处理程序:

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;
}
于 2013-09-10T21:48:04.220 回答