as3 MouseEvent localX表现得很奇怪

shi*_*doo 1 actionscript-3 mouseevent

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

private function _barClicked($e:MouseEvent):void {
      trace($e.localX)
}
Run Code Online (Sandbox Code Playgroud)

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

Geo*_*nza 6

嗯,很奇怪

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

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

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

尝试

private function _barClicked($e:MouseEvent):void {
      trace($e.currentTarget.mouseX);
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

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