as3 MouseEvent localX ведет себя странно - PullRequest
1 голос
/ 22 августа 2009

Я столкнулся с этой действительно странной ситуацией, у меня есть эта панель, и я добавляю к ней EventListener, поэтому, когда панель нажата, трассировка localX

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

Странно то, что при нажатии на одно и то же место иногда он прыгает на неправильное число что я не могу понять, почему, я проследил ширину бара, и это правильное значение, localX просто давая мне случайные числа. Кто-нибудь сталкивался с этой проблемой? Спасибо!

Ответы [ 4 ]

6 голосов
/ 23 августа 2009

Хммм, странно

Я попробовал простой сценарий, в котором у меня есть прямоугольник с именем 'bar', вставил ваш слушатель для события CLICK, затем попробовал событие MOUSE_DOWN. Оба работали нормально. Я не получил случайные значения.

Полагаю, ваш клип содержит другие объекты внутри, и вы можете получить значения от дочерних элементов бара, а не от самого бара. Не уверен, хотя, это всего лишь предположение.

Вы можете убедиться, что ваши значения получены из $ e.currentTarget, так как $ e.target может изменяться в зависимости от: вашего клипа и количества дочерних элементов, положения щелчка и фазы события.

Попробуйте

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

Надеюсь, это поможет!

2 голосов
/ 16 сентября 2010

Просто хотел отметить вариант этой проблемы для тех, для кого вышеописанное не работает.

У меня была та же проблема - localX показывает нечетные значения. Мой не был случайным, просто намного ниже, чем я ожидал. То есть, нажмите на крайний правый спрайт и получите только 17.2, событие, хотя ширина сообщала как 160.

Что я обнаружил, так это то, что мой экземпляр представлял собой уменьшенную версию символа, чья собственная ширина была намного меньше.

Как только я настроил его так, чтобы символ и экземпляр имели одинаковую ширину, я начал получать правильные значения.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 09 февраля 2010

У меня была та же проблема, и Кевин Кондон решение из комментария выше помогло моей проблеме. Я просто размещаю это здесь, потому что я почти пропустил это в комментарии.

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

Спасибо, Кевин.

1 голос
/ 05 февраля 2011

Если обнаружено, что пока я использую решение, Кевин Кондон предложенные различия в масштабировании между различными символами учитываются, и все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...