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

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

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

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
По умолчанию Реализация для битмап hitArea + маска

Добрый вечер.

Возникла такая задача:
Есть исходная битмапа - некая внешняя PNG картинка c альфа каналом.
Нужно как-то задать ей кастомную область реагирования на события мыши вне зависимости от параметров исходной битмапы.

Возникла идея сделать для этой картинки что то наподобие маски - ее дубликат состоящий из двух цветов. Один цвет - активная область картинки для событий мыши, второй цвет - неактивная.
В итоге загружаем картинку + эту двухцветную маску, и нужно как-то исходной картинке назначить областью реагирования нашу двухцветную маску с учетом цвета пикселов. Типа как hitArea для Sprite, но весь контент должен быть внешним, из битмап.

Если неактивную область маски сделать прозрачной, то можно заюзать hitTest в BitmapData, но для этого маска должна лежать на сцене и быть видимой. Вобщем что-то тупик какой-то.

Может можно все сделать проще? Подскажите пожалуйста.
__________________
Стой! Опасная зона! Работа мозга!

Старый 12.07.2011, 00:06
RaVeN-Nikma вне форума Посмотреть профиль Отправить личное сообщение для RaVeN-Nikma Посетить домашнюю страницу RaVeN-Nikma Найти все сообщения от RaVeN-Nikma
  № 2  
Ответить с цитированием
RaVeN-Nikma

Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
Из тонны, текста я понял, что нужно сделать hitTest для подгружаемой png? Щелкнул мышью по картинке, попал в прозрачность = false, попал в рисунок = true. (просто хочу прояснить картину). Если все так, то можно использовать getPixel

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от marat_sa Посмотреть сообщение
можно заюзать hitTest в BitmapData, но для этого маска должна лежать на сцене и быть видимой
Мммм, зачем лежать на сцене? Это метод BitmapData, его работоспособность не зависит от того, лежит ли битмап на сцене или нет.
И да, getPixel32 быстрее будет, чем hitTest.

Старый 12.07.2011, 01:14
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 4  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Цитата:
Из тонны, текста я понял, что нужно сделать hitTest для подгружаемой png? Щелкнул мышью по картинке, попал в прозрачность = false, попал в рисунок = true.
Данный функционал обеспечивается и простым hitTest с нужным порогом альфа...
Нужен именно чтобы кастомный hitTest был, вне зависимости от альфы исходной картинки. Т.е. исходная может быть в каком-то месте прозрачна, но там она должна быть активна.

Цитата:
Мммм, зачем лежать на сцене?
да, на сцену ложить не нужно для hitTest, это я погорячился...

Да, вот тут тоже подумали с товарищем... Помещаем исходную картинку на сцену, отлавливаем в ней событие мыши, снимаем Point с нужными координатами и проецируем данную точку на битмапу-маску. А там уже с помощью getPixel(32) делаем проверку на то, куда мы попали. Нормальный способ же? Ничего вроде сильно страшного не делаем...
__________________
Стой! Опасная зона! Работа мозга!

Старый 12.07.2011, 01:42
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так и не понял, при чем тут вообще битмап. Есть картинка, а есть "кнопка" НАД картинкой. На кнопке нарисовали все что надо с нулевой альфой и ловите клики с нее, а не с картинки.

Добавлено через 4 минуты
А, понял. "Маска" у вас не может быть векторной, загружается вместе с картинкой.. тогда конечно, взяли координаты клика и сравнили с пикселем "маски" (я бы сказал "карты") И незачем 32бита, просто черный/белый двухцветный гиф, весит копейки.
__________________
Reality.getBounds(this);

Старый 12.07.2011, 03:06
marat_sa вне форума Посмотреть профиль Отправить личное сообщение для marat_sa Посетить домашнюю страницу marat_sa Найти все сообщения от marat_sa
  № 6  
Ответить с цитированием
marat_sa
 
Аватар для marat_sa

Регистрация: Nov 2006
Сообщений: 487
Отправить сообщение для marat_sa с помощью ICQ Отправить сообщение для marat_sa с помощью Skype™
Да, так и сделаю. Всем спасибо.
__________________
Стой! Опасная зона! Работа мозга!

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

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

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


 


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


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