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

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

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

Регистрация: May 2010
Сообщений: 5
Question beginBitmapFill и прозрачность

Всем привет,

хотелось бы спросить у общественности по сабжевому вопросу. Исходная композиция такова:

1) Два объекта Sprite, один частично перекрывается вторым
2) Создаю объект типа BitmapData, картинка с прозрачностью
3) Используя beginBitmapFill рисую картинку на первом и на втором спрайте

Вопрос: каким магическим образом можно сделать так, что бы прозрачность картинки на втором спрайте работала и из под второго спрайта было бы видно первый?

Спасибо!

Старый 08.07.2010, 22:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Так оно вроде и так работает... или я не понял вопрос...
__________________
Hell is the possibility of sanity

Старый 08.07.2010, 22:41
nommet вне форума Посмотреть профиль Отправить личное сообщение для nommet Найти все сообщения от nommet
  № 3  
Ответить с цитированием
nommet

Регистрация: May 2010
Сообщений: 5
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Так оно вроде и так работает... или я не понял вопрос...
Оно работает до тех пор, пока я не пользуюсь beginBitmapFill... Флэш заливает картинку игнорируя альфаканал, забивает белый фон.

Добавлено через 2 минуты
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Так оно вроде и так работает... или я не понял вопрос...
Если посмотреть цвет точки с координатами (0, 0) типа

Код AS3:
trace(bitmap.getPixel32(0, 0))
то возвращается число 0xFFFFFFFF, т.е. прозрачность на лицо.

Старый 08.07.2010, 23:16
nommet вне форума Посмотреть профиль Отправить личное сообщение для nommet Найти все сообщения от nommet
  № 4  
Ответить с цитированием
nommet

Регистрация: May 2010
Сообщений: 5
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Так оно вроде и так работает... или я не понял вопрос...
Извините, господа, это был me-bug... В одном из 5-ти мест при создании BitmapData я не указал флаг transparent = true и цвет 0xFFFFFF... Странно, эти данные стоят по умолчанию, однако если их не указать явно, то картинка получается непрозрачной...

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Значит у Вас БитмапДата получается без прозрачности.
Как Вы ее создаете?

Добавлено через 26 минут
Вообщето 0xFFFFFFFF - это налицо непрозрачность.
__________________
Reality.getBounds(this);

Старый 13.02.2013, 05:14
alexxus вне форума Посмотреть профиль Отправить личное сообщение для alexxus Найти все сообщения от alexxus
  № 6  
Ответить с цитированием
alexxus

Регистрация: Dec 2010
Сообщений: 16
У меня вопрос по этой же теме, по-этому разворошу её.
Есть спрайт tmp. рисую в нем в Graphics фигуру. отображаю. - Клик мыши по незарисованной области tmp- норм проходит на нижележащем объекте.

Но если я копирую содержимое спрайта tmp в спрайт res:
Код AS3:
                         var bms:BitmapData = new BitmapData(mapW, mapH, true, 0);
			bms.draw(tmp);
			res.graphics.beginBitmapFill(bms);
				res.graphics.drawRect(0, 0, mapW, mapH);
			res.graphics.endFill();
то клик мыши по незакрашенной области res не доходит до нижележащих объектов, а таргетом является res


Последний раз редактировалось mooncar; 13.02.2013 в 10:24.
Старый 13.02.2013, 07:42
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
И что непонятно? Во втором спрайте у Вас рисуется прямоугольник. У него нет никаких "незакрашенных" областей. Если где-то изображение прозрачно, то это тоже самое, как закрасить прямоугольник цветом с непрозрачностью ноль — вроде бы ничего нет, а на мышь реагирует)))
__________________
Reality.getBounds(this);

Старый 13.02.2013, 08:04
alexxus вне форума Посмотреть профиль Отправить личное сообщение для alexxus Найти все сообщения от alexxus
  № 8  
Ответить с цитированием
alexxus

Регистрация: Dec 2010
Сообщений: 16
Ага. Еще пошарил и нашел тему с вашим участием http://www.flasher.ru/forum/showthre...eginBitmapFill.
Дошло, что прозрачность "работает" только в векторных объектах, коими graphics. и является. А при выполнении beginBitmapFill все это дело "растеризуется".
В общем решил проблему, использовав ф-ю проверки альфаканала кликаемого пикселя,

Код AS3:
//-----------------------------------------------------------------------------------------
		public static function mouseHits(target:DisplayObject):Boolean{
			if (target == null || target.stage == null){
			return false;
			}
			if (target.hitTestPoint(target.stage.mouseX, target.stage.mouseY)){
				var aMatrix:Matrix = new Matrix();
 
				aMatrix.translate(-target.mouseX, -target.mouseY);
				var bd:BitmapData= new BitmapData(1, 1, true, 0x00000000);
				bd.draw(target, aMatrix);
				var alpha:uint = ((bd.getPixel32(0, 0) >> 24) & 0xFF);
				bd.dispose();
				return alpha > 0x0F;
			}
			return false;
		}

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

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

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


 


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


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