Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Starling] MovieClip hitArea (http://www.flasher.ru/forum/showthread.php?t=195000)

vikvik 26.02.2013 17:10

MovieClip hitArea
 
Доброго времени суток!
Есть стандартный movieClip, хотелось бы определять куда кликнули в текущем кадре: в прозрачку или нет (по событию). Для image всё понятно. Подскажите как правильно это сделать? Перерыл пол инета, но пока не нашел способа.

Виноват, не hitArea, а hitTest(point).

KumoKairo 01.03.2013 12:55

В старлинге метод hitTest работает немного по-другому, нежели в стандартном флеш. Он не возвращает значение истина или ложь в зависимости от попадания точки на другой объект, а рекурсивно превращает глобальные координаты "детей" какого-либо дисплей объекта и возвращает ссылку на объект, с которым произошло столкновение или null если нет

Для пиксельной точности проверки столкновений вам нужно вместо movieClip.hitTest(Point) использовать BitmapData.hitTest
Более подробно это обсуждается здесь:
http://www.mikechambers.com/blog/200...ion-detection/

vikvik 01.03.2013 15:19

Есть ли возможность достучаться из movieClip до его bitmapData, не используя Атлас для создания нужной bitmapData для уже последующей проверки bitmapData.hitTest?

KumoKairo 01.03.2013 15:43

Нет, к сожалению после превращения Bitmap или BitmapData в Texture, обратное преобразование сделать невозможно..
На старлинговском форуме решали подобные проблемы, там предлагали переделать конструктор мувиклипа (читать - создать свой наследующий класс) чтобы он кушал Bitmap или BitmapData вместо Texture, а затем внутри конструктора преобразовывать эти данные в Texture и вызывать суперкласс. таким образом внутри класса остается сам объект BitmapData который можно использовать для проверки на столкновения

vikvik 02.03.2013 21:32

Спасибо. Почему-то мне очень не хотелось прибегать к этому способу. Но раз другого более оптимального нет...

KumoKairo 02.03.2013 22:57

Этот способ сам Дэниел (автор фреймворка) предложил, как самый оптимальный :)


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

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