从AS3中的侦听器获取单击坐标

时间:2013-09-10 14:32:35

标签: actionscript-3 flash

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

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

所以,我的问题是:

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

2 个答案:

答案 0 :(得分:1)

很确定这就是你所要求的。

Trigger event from child to parent in AS3

  

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

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

[gameboard_instance_name].mouseChildren = false;
//[gameboard_instance_name].addEventListener(...);

答案 1 :(得分: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;
}