as3 MouseEvent localX ведет себя странно
-
19-09-2019 - |
Вопрос
Я столкнулся с этой действительно странной ситуацией, у меня есть этот бар, и я добавлю к нему, поэтому, когда нажимается в баре, следуйте Localx
private function _barClicked($e:MouseEvent):void {
trace($e.localX)
}
Странно то, что при щелчке в том же месте, иногда это прыгает к неправильному числу, который я не могу понять, почему, я проследил ширину бара, и это правильное значение, Localx просто дает мне случайное числаКто-нибудь когда-нибудь сталкивался с этой проблемой?Спасибо!
Решение
Хм, странно
Я попробовал простой сценарий, в котором у меня есть прямоугольник с именем «bar», и я вставил прослушиватель события CLICK, а затем попробовал событие MOUSE_DOWN.Оба работали нормально.Я не получил случайных значений.
Я предполагаю, что ваш клип-бар содержит внутри другие объекты, и вы можете получить значения от дочерних элементов бара, а не от самого бара.Хотя не уверен, это всего лишь предположение.
Вы можете попытаться убедиться, что ваши значения поступают из $e.currentTarget, поскольку $e.target может измениться в зависимости от:ваш клип и количество дочерних элементов, положение щелчка и фазу события.
Пытаться
private function _barClicked($e:MouseEvent):void {
trace($e.currentTarget.mouseX);
}
Надеюсь, поможет!
Другие советы
У меня была такая же проблема, и Кевин Кондон решение из комментария выше помогло моей проблеме.Я просто публикую это здесь, потому что чуть не пропустил это в комментарии.
private function _barClicked($e:MouseEvent):void {
var coord:Point = $e.currentTarget.globalToLocal(new Point($e.stageX, $e.stageY));
trace(coord.x);
}
Спасибо, Кевин.
Просто хотел отметить вариант этой проблемы для тех, у кого вышеописанное не работает.
У меня была та же проблема: localX показывал нечетные значения.Мои результаты были не случайными, просто они были намного ниже, чем я ожидал.То есть щелкните крайнюю правую часть спрайта и получите только 17,2, хотя ширина была равна 160.
Я обнаружил, что мой экземпляр представлял собой масштабированную версию символа, исходная ширина которого была намного меньше.
Как только я настроил так, чтобы символ и экземпляр имели одинаковую ширину, я начал получать правильные значения.
Надеюсь, это кому-то поможет.
Если обнаружится, что пока я использую решение, которое Кевин Кондон предлагаемые различия в масштабировании между разными символами принимаются во внимание, и все работает нормально.