Просмотр полной версии : проблема с hitTestPoint
random13
21.08.2009, 16:21
наверное уже обсуждалось но всё же прошу помочь разобраться с проблемой
for each(var point:MapPoint in this.points) {
if(point.hitTestPoint(mouseX, mouseY, false)) {
e.stopPropagation();
point.dispatchEvent(new GeometryEvent(GeometryEvent.POINT_MOUSE_DOWN));
return true;
}
}
и так point лежит в мувике geometry который в свою очередь еще в одном а тот уже лежит в stage
тест не проходит, где моя ошибка
Волгоградец
21.08.2009, 16:39
Перевести координаты мыши в локальные - туда, где лежат MapPoint.
random13
21.08.2009, 16:51
изменил на такой вариант:
for each(var point:MapPoint in this.points) {
var mousePoint:Point = new Point(mouseX, mouseY);
mousePoint = this.globalToLocal(mousePoint);
if(point.hitTestPoint(mousePoint.x, mousePoint.y, false)) {
// e.stopPropagation();
point.dispatchEvent(new GeometryEvent(GeometryEvent.POINT_MOUSE_DOWN));
return true;
}
else {
return false;
}
}
так как этот метод в себя как раз добавляет в себя точки то и преобразование в локальные координаты веду чере this или не верно опять
Волгоградец
21.08.2009, 17:58
Хм. Я наврал, прошу прощения, координаты переводить не обязательно. Твои оба варианта рабочие. Ошибка в другом месте.
random13
21.08.2009, 17:59
да спасибо, понял что не там
Добавлено через 65 часов 10 минут
новый баг обнаружился:
суть в том что у меня есть объект(назовём его движимым) в который я складываю движимые объекты,
я добавляю в него объекты которые хочу в последствие при попадание двигать, при этом вот какая последовательность:
- добавил объект
после этого если я нажимаю по моему объекту то он прекрасно проходит hittest но если я после добавления сдвигаю главный объект в котором содержится объект для проверки то тест не проходится, в чем причина?
public function isGeometryClick():Boolean {
if(this.points.length > 0) {
for each(var point:MapPoint in this._points) {
if(point.hitTestPoint(mouseX, mouseY, false)) {
Globals.is_block_map = true;
point.dispatchEvent(new GeometryEvent(GeometryEvent.POINT_MOUSE_DOWN));
return true;
}
}
return false;
}
else
return false;
}
Волгоградец
24.08.2009, 18:26
Из-за того, что ты двигаешь контейнер, спрайт не может перестать ловить события. В другом месте ошибка опять - либо что-то перекрывает твой объект, либо еще что-то.
random13
24.08.2009, 18:52
ну вот на самом деле не совсем понятная зависимость: если не двигал родительский контейнер то всё ок а если двигал то не канает
при этом здесь другой код то помойму ну никак не связан
Добавлено через 71 час 9 минут
подскажите, при какой ситуации может возникнуть что после драга перестает проходить hitTestPoint
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.