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

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

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

Регистрация: May 2009
Сообщений: 134
По умолчанию как продублировать спрайт?

Здравствуйте.

задача такая - есть контейнер. в нем разные шейпы. в какой-то момент надо сделать над ним дымку - приглушить то есть. для этого нужен еще один контейнер, который по форме равен исходному, но с заливкой определенным цветом.
почему-то после присвоения происходит как будто слияние спрайтов. я пытаюсь сделать видимость "дымки" меньше, а уменьшается и видимость исходного спрайта.
вот код:

Код AS3:
//здесь задаем параметры
		public function setFogParam():void {
			sprFog = spr;                            //присваиваем спрайт "дымку" исходному
			addChild(sprFog);
			sprFog.alpha = 0;
			var colorInfo2:ColorTransform = sprFog.transform.colorTransform;
			if(_fogColor != 0){
				colorInfo2.color = _fogColor;
				sprFog.transform.colorTransform = colorInfo2;
			}
		}
//здесь вызываем саму дымку
		public function setFog():void {
			Tweener.addTween(sprFog, {alpha:.5, time:1, delay:0, transition:"easeOutExpo"});
 
		}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
BitmapData#draw()
BitmapData#copyChannel()

Добавлено через 6 минут
создаете прозрачную битмапдату размером как ваш спрайт и нужного цвета.
Делаете вторую битмапдату клонированием первой BitmapData#clone()
Отрисовываете в нее спрайт.
Копируете альфа-канал (8) битмапдаты с картинкой в альфаканал пустой битмапдаты.
Получаете плашку нужной формы и нужного цвета.
Визуализируете ее с помощью битмап.
Меняете альфу Битмапа с помощью твинера.
__________________
Reality.getBounds(this);

Старый 26.10.2011, 02:14
kaetano вне форума Посмотреть профиль Отправить личное сообщение для kaetano Найти все сообщения от kaetano
  № 3  
Ответить с цитированием
kaetano
 
Аватар для kaetano

Регистрация: May 2009
Сообщений: 134
Цитата:
Сообщение от Wolsh Посмотреть сообщение
BitmapData#draw()
BitmapData#copyChannel()

Добавлено через 6 минут
создаете прозрачную битмапдату размером как ваш спрайт и нужного цвета.
Делаете вторую битмапдату клонированием первой BitmapData#clone()
Отрисовываете в нее спрайт.
Копируете альфа-канал (8) битмапдаты с картинкой в альфаканал пустой битмапдаты.
Получаете плашку нужной формы и нужного цвета.
Визуализируете ее с помощью битмап.
Меняете альфу Битмапа с помощью твинера.
спасибо, попробую разобраться. пока сделала просто дроу - не очень смотрится - углы белые. и еще у меня есть текст в исходном спрайте - он не заливался цветом.

Добавлено через 11 минут
получается белый прямоугольник....
что не так, помогите еще раз, пожалуйста
Код AS3:
        public function setFogParam():void {
 
			var bmd:BitmapData = new BitmapData(_widthOb, _heightOb + _heightTopOb);
			var bmdClone:BitmapData = bmd.clone();
 
			var colorInfo2:ColorTransform = sprFog.transform.colorTransform;
			if(_fogColor != 0){
				colorInfo2.color = _fogColor;
			}
			var rect:Rectangle = new Rectangle(0, 0, _widthOb, _heightOb + _heightTopOb);
			var pt:Point = new Point(_xOb, _yOb);
 
			bmdClone.draw(spr, null, colorInfo2);
			bmd.copyChannel(bmdClone, rect, pt, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA);
 
			var bmp:Bitmap = new Bitmap(bmd);
			this.addChild(bmp);
			bmp.x = 600;
                }

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
var bmd:BitmapData = new BitmapData(_widthOb, _heightOb + _heightTopOb, true, 0x00FFFFFF);
Добавлено через 2 минуты
Да, и не надо тут colorTransform. Цвет дыма задаете при создании битмапдаты, только добавляете альфу 0, чтобы получился ARGB

Добавлено через 7 минут
И pt не надо)) просто new Point(), то есть с координатами (0, 0). Вам надо просто перекинуть альфаканал из снимка Спрайта в битмапдату, закрашенную нужным цветом. Битмапдаты одинаковые, так что точка должна быть в ноль/ноль.
И rect можно получить просто взяв bmdClone.rect;
__________________
Reality.getBounds(this);

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

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

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


 


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


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