Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.07.2007, 12:12
Arsenium вне форума Посмотреть профиль Отправить личное сообщение для Arsenium Найти все сообщения от Arsenium
  № 1  
Ответить с цитированием
Arsenium

Регистрация: Sep 2006
Сообщений: 43
По умолчанию Клик на нерозрачной области

Вывожу на экран несколько картинок, затем ставлю событие клик на контейнеры, содержащий картинки.
Проблема в том, что картнки перекрываются так, что под прозрачной областью одной картинки может лежать непрозрачная область другой. Соответственно при клике на такой области возникает событие клик на картинке с прозрачной областью.
Можно ли сделать, чтобы событие возникало на картинке с непрозрачной областью?

Старый 01.07.2007, 12:15
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Можно попробовать найти на картинке все прозрачные пиксели, создать из них маску, наложить на картинку…

Старый 05.07.2007, 16:12
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 3  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Решение с масочкой - очень не простое...

Первый вариант - для каждого непрозрачного пикселя картинки рисовать на маске зарашенный квадратик 1x1.
Кроме того, что сам процес создания такой маски займёт прилично времени, из-за неё ещё и сильно просядет производительность, потому что, насколько я понял, пересекающиеся заливки одного цвета объединяются только в оболочке.
При рисовании в run-time получится маска состоящая из нескольких тысяч (может даже и сотен тысяч) отдельных квадратиков.


Другой вариант - найти пограничные пиксели и прочертить контур чисто по ним. Но и сам поиск таких пикселей не прост, и есть риск получить нежелательные пересечения, в результате которых заливка получится неправильной.

Вот если бы можно было узнать все мувики, которые пересекают определённую точку экрана...


P.S.
А хотя вру... Вторым способом построить не так сложно.
Бежим по всем пикселям. Если пиксель не прозрачный, то сравниваем его с соседями.
Если сосед прозрачный, рисуем между ними отрезок длиной 1 пиксель.

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


Последний раз редактировалось WindWalker; 05.07.2007 в 16:20.
Старый 05.07.2007, 17:32
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 4  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
Цитата:
Сообщение от WindWalker
Вот если бы можно было узнать все мувики, которые пересекают определённую точку экрана...
Sprite.getObjectsUnderPoint(point);
__________________
33 коровы

Старый 05.07.2007, 18:25
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 5  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Тогда можно использовать такой подход (тоже правда геморройный):
при обработке клика, проверяем пиксель в который кликнули.
Если он прозрачный, находим спрайт или мувик находящийся ниже и отправляем событие ему.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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