Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   проблема с hitTestPoint (http://www.flasher.ru/forum/showthread.php?t=128974)

random13 21.08.2009 16:21

проблема с hitTestPoint
 
наверное уже обсуждалось но всё же прошу помочь разобраться с проблемой
Код AS3:

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

изменил на такой вариант:

Код AS3:

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 но если я после добавления сдвигаю главный объект в котором содержится объект для проверки то тест не проходится, в чем причина?

Код AS3:

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


Часовой пояс GMT +4, время: 00:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.