2009-08-21 47 views
1

我遇到过这种很奇怪的情况,我有这样的吧,我的addEventListener它,所以当 酒吧的点击,跟踪localXAS3的MouseEvent localX怪怪

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

奇怪的是,在点击时同样的地方,有时它会跳转到一个错误的号码 ,我不明白为什么,我跟踪了酒吧的宽度,这是正确的值,localX是 只给我随机数。有没有人遇到过这个问题?谢谢!

回答

6

嗯,怪

我试过一个简单的场景,我有一个长方形名为“酒吧”贴监听click事件,然后试图将MOUSE_DOWN事件。两者都很好。 我没有得到随机值。

我的猜测是你的吧剪辑包含其他对象中,你可能会得到酒吧的孩子值,而不是栏本身。不确定,但这只是一个猜测。

你可以尝试,以确保您的值来自$ e.currentTarget作为e.target $可能的变化取决于:您的剪辑有多少孩子其持有的点击事件阶段的位置。

尝试

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

希望它能帮助!上述

+4

我遇到了这种情况,这正是乔治指出的原因。但是,一位同事指出,鼠标位置可能在事件发生的时间和在currentTarget上查询mouseX的时间之间移动。因此,在需要知道事件发生的确切位置的情况下,最好使用e.currentTarget.globalToLocal(new Point(e.stageX,e.stageY))来计算本地坐标。 – 2009-12-09 16:39:57

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

只是想记下这个问题的变化,对于那些以上不工作的人。

我有同样的问题 - localX显示奇数值。矿井并不是随机的,远低于我的预期。也就是说,点击精灵的最右侧,只得到17.2,事件虽然宽度报告为160.

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

一旦我把它使得符号和实例有同样的宽度,我开始正确的价值观。

希望这可以帮助别人。

1

如果发现,只要我使用,在不同的符号之间缩放Kevin Condon提出的差异考虑在内,一切工作了罚款的解决方案。