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

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

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
По умолчанию Перекраска клипа с помощью ColorTransform

Привет! Снова вопрос по фильтрам. В библиотеке - png картинка. На ней изображен, скажем, круг. Аттачу ее и перекрашиваю:
Код:
public static var redTransform:ColorTransform = new ColorTransform(0, 0, 0, 0, 255, 0, 0, 255);
public static var matr:Matrix = new Matrix ();

mc.attachMovie ("lib.round.PNG", "mc1", mc.getNextHighestDepth ());
mc.mc1._visible = false;
myBmp = new BitmapData(mc.mc1._width, mc.mc1._height, false, 0x00000000);
myBmp.draw (mc.mc1, matr, redTransform)
mc_1 = mov.createEmptyMovieClip("mc_1", 2);
mc_1.attachBitmap(myBmp, mov.getNextHighestDepth ());
Красным становится весь клип, т.е. прямоугольная область. Реально ли изменить цвет только самого изображения, не затрагивая пустые края?

Старый 24.06.2008, 18:36
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код:
public static var redTransform:ColorTransform = new ColorTransform(0, 0, 0, 0, 255, 0, 0, 255);
public static var matr:Matrix = new Matrix ();

mc.attachMovie ("lib.round.PNG", "mc1", mc.getNextHighestDepth ());
mc.mc1._visible = false;
myBmp = new BitmapData(mc.mc1._width, mc.mc1._height, true, 0);
myBmp.draw (mc.mc1, matr, redTransform)
mc_1 = mov.createEmptyMovieClip("mc_1", 2);
mc_1.attachBitmap(myBmp, mov.getNextHighestDepth ());
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб


Последний раз редактировалось MrPoma; 24.06.2008 в 18:39.
Старый 24.06.2008, 18:46
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 3  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Не, все равно квадрат. Параметр true означает будет ли битмапа нести дополнительные биты о прозрачности. Отдельную область изображения перекрасить скорее всего нельзя.

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

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код:
import flash.display.BitmapData;
import flash.geom.ColorTransform;

var red:ColorTransform = new ColorTransform(0, 0, 0, 0, 255, 0, 0, 255);

var bmp:BitmapData = BitmapData.loadBitmap('img');

var mc:MovieClip = this.attachMovie ('img', 'mc', this.getNextHighestDepth());
mc.attachBitmap(bmp, 0);
mc.transform.colorTransform = red;
Вложения
Тип файла: rar transform.rar (87.4 Кб, 52 просмотров)
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

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

Регистрация: May 2008
Сообщений: 476
Привет Волгоградец!

Если я правильно понял, что требуется сделать, то у меня на твой вопрос несколько идей возникло:

1. Попробуй использовать colorMatrixFilter. У него несколько расширена функциональность.
2. Создать маску, используя исходное изображение и метод класса BitmapData -threshold. Метод threshold должен будет вырезать из исходного изображения пиксели со значением цвета отличным от 0xFFFFFF (или другой) и заменить его на 0x000000. Таким образом получиться черно-белая маска, которую методом draw c blendMode наложить на исходное изображение после трансформа цвета.

Если, я что то непонял - пожалуйста поясни.
__________________
Случайность, господа, это знаете ли непознанная необходимость.

Старый 25.06.2008, 11:39
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Привет, Alex_beginner.
Все гораздо проще оказалось. Во всем виноват Paint. Он сохраняет PNG без альфа канала и поэтому фон, на котором ничего не изображено становится белым. А трансформация цвета применяется ко всему изображению. Но если сохранить PNG в 32 битах, то фон, на котором ничего не изображено как бы не существует, т.е. он прозрачный и соответственно к нему траесформация чвета не применяется.
MrPoma, спасибо.

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

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

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


 


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


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