as3 MouseEvent localX表现得很奇怪

时间:2009-08-21 23:42:45

标签: actionscript-3 mouseevent

我遇到了这个非常奇怪的情况,我有这个吧和我addEventListener,所以当 单击该栏,跟踪localX

private function _barClicked($e:MouseEvent):void {
      trace($e.localX)
}

奇怪的是,当点击同一地点时,有时会跳到错误的数字 我无法弄清楚为什么,我追踪了条的宽度,这是正确的值,localX是 只是给我随机数字。有没有人遇到过这个问题?谢谢!

4 个答案:

答案 0 :(得分:6)

嗯,很奇怪

我尝试过一个简单的场景,我有一个名为'bar'的矩形并粘贴了CLICK事件的监听器,然后尝试了MOUSE_DOWN事件。两者都很好。 我没有得到随机值。

我的猜测是你的酒吧剪辑里面包含其他物品,你可能会从酒吧的孩子那里获得价值,而不是酒吧本身。但不确定,这只是猜测。

您可以尝试确保您的值来自$ e.currentTarget,因为$ e.target可能会更改,具体取决于:您的剪辑及其拥有的子项数,点击位置和事件阶段。

尝试

private function _barClicked($e:MouseEvent):void {
      trace($e.currentTarget.mouseX);
}

希望它有所帮助!

答案 1 :(得分:2)

我遇到了同样的问题,上面评论中的Kevin Condon解决方案帮我解决了问题。我只是在这里发帖,因为我在评论中几乎错过了它。

private function _barClicked($e:MouseEvent):void {
     var coord:Point = $e.currentTarget.globalToLocal(new Point($e.stageX, $e.stageY));
     trace(coord.x);
}

谢谢凯文。

答案 2 :(得分:2)

只是想为那些不能正常工作的人注意这个问题的变化。

我遇到了同样的问题 - localX显示奇数值。我不是随意的,远远低于我的预期。即,点击精灵的最右边,只获得17.2,虽然宽度报告为160。

我发现我的实例是符号的缩放版本,其原生宽度要小得多。

一旦我设置它以使符号和实例具有相同的宽度,我就开始获得正确的值。

希望这有助于某人。

答案 3 :(得分:1)

如果发现只要我使用Kevin Condon提出的不同符号之间的比例差异的解决方案,并且一切正常。