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

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

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
По умолчанию DisplacementMapFilter

Так как я ничего не понял из примеров по DisplacementMapFilter, решил попробовать создать свой эффект. Но как я и ожидал - не работает. Помогите пожалуста. И если кто может объясните как работают эти фильтры...

А вот и тот бред что я написал:

Код AS3:
package fl.bmpEff
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.filters.DisplacementMapFilter;
	import flash.filters.DisplacementMapFilterMode;
	import flash.text.*;
	import flash.geom.*
	public class WaveFilter 
	{
		public function WaveFilter(bmp:Bitmap)
		{
			var bmpData=bmp.bitmapData;
			var f=new DisplacementMapFilter(new BitmapData(bmpData.width,bmpData.height)
											,new Point(0,0), 1, 1, 200, 200, 
											DisplacementMapFilterMode.IGNORE);
			var field=txtField();
			var mtrx=new Matrix(1,0,0,1,100,100);
			f.mapBitmap.draw(field,mtrx);
			bmp.filters=[f];
		}
 
		private function txtField()
		{
			var field=new TextField();
			field.text="kuku";
			var format=new TextFormat();
			format.size=300;
			format.color=0xffffff;
			format.bold=true;
			field.setTextFormat(format);
			field.autoSize="left";
			field.x=100;
			field.y=100;
			return(field);
		}
	}
}

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

блогер
Регистрация: Jul 2007
Адрес: Russia
Сообщений: 292
Записей в блоге: 5
field.autoSize="left";

Используй константы TextAutoSize например, так правильнее. Когда я попытался юзать draw и туда засовывать TextField,то у меня ужасно выглядела надпись.Даже нашел багу на адобе, где расписано, как правильно отрисовать текстфилд, но без результатно, в зависимости от контекста, он был читаем или нет.
__________________
Оптимизация производительности на уровне кода

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
Сообщение от _Smirnoff Посмотреть сообщение
field.autoSize="left";

Используй константы TextAutoSize например, так правильнее. Когда я попытался юзать draw и туда засовывать TextField,то у меня ужасно выглядела надпись.Даже нашел багу на адобе, где расписано, как правильно отрисовать текстфилд, но без результатно, в зависимости от контекста, он был читаем или нет.
Изменил, но результат каким был таким и остался

Добавлено через 5 минут
Цитата:
Сообщение от Rzer Посмотреть сообщение
При создании нового фильтра, ты в качестве канала для x и y координаты указал 1,1 что соответствует красному каналу или BitmapDataChannel.RED. Новый bitmapData у тебя создается без указания цвета фона, а значит он берется по умолчанию 0xffffffff.

Шрифт белого цвета по каналу ред также имеет значение 255 как и фон. Соответственно для фильтра в ред канале не происходит никаких изменений.
Спасибо, работает. Но функционирование этого фильтра я всё же не доконца понял...

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
При создании нового фильтра, ты в качестве канала для x и y координаты указал 1,1 что соответствует красному каналу или BitmapDataChannel.RED. Новый bitmapData у тебя создается без указания цвета фона, а значит он берется по умолчанию 0xffffffff.

Шрифт белого цвета по каналу ред также имеет значение 255 как и фон. Соответственно для фильтра в ред канале не происходит никаких изменений.

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

блогер
Регистрация: Jul 2007
Адрес: Russia
Сообщений: 292
Записей в блоге: 5
http://www.ultrashock.com/forums/act...elp-91027.html

Почитай, может поможет понять.
__________________
Оптимизация производительности на уровне кода

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Могу объяснить. Предположим мы будем работать в RED канале. Значение 128 или 0x80 не дает сдвига поэтому будем использовать цвет 0x80808080 в качестве фона для битмап даты. Предположим на карте дисплейсмента мы нарисовали белую точку (значение 255 в ред канале) это означает, что в эту точку (где точка была нарисована) мы вернем точку на 128 пикселей правее и наоборот если точка черная мы мы возьмем точку на 128 пикселей левее. Если же мы используем битмап дату для фильтра белого цвета - вся картинка будет сдвинута на 128 пикселей в лево (точки берутся справа и рисуются на 128 левее) (128 пикселей это для большей наглядности - настраивается через параметр scaleX/scaleY)

Например, чтобы добиться эффекта лупы. В центре должен быть нейтральный цвет 0x80 и меняться к краям лупы (к левому краю соответственно становиться более светлым (пиксели будут браться ближе к центру), а к правому более темным)


Последний раз редактировалось Rzer; 12.11.2008 в 00:45.
Старый 12.11.2008, 01:09
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 7  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
Сообщение от Rzer Посмотреть сообщение
Могу объяснить. Предположим мы будем работать в RED канале. Значение 128 или 0x80 не дает сдвига поэтому будем использовать цвет 0x80808080 в качестве фона для битмап даты. Предположим на карте дисплейсмента мы нарисовали белую точку (значение 255 в ред канале) это означает, что в эту точку (где точка была нарисована) мы вернем точку на 128 пикселей правее и наоборот если точка черная мы мы возьмем точку на 128 пикселей левее. Если же мы используем битмап дату для фильтра белого цвета - вся картинка будет сдвинута на 128 пикселей в лево (точки берутся справа и рисуются на 128 левее) (128 пикселей это для большей наглядности - настраивается через параметр scaleX/scaleY)

Например, чтобы добиться эффекта лупы. В центре должен быть нейтральный цвет 0x80 и меняться к краям лупы (к левому краю соответственно становиться более светлым (пиксели будут браться ближе к центру), а к правому более темным)
Ну уже что то проясняется. Но что это за RED канал??? И чем он отличается от других??? В общем я многое понял из того что ты сказал. Большое тебе спасибо!!!!!!!!!!!

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Любой цвет формируется по четырем каналам RED GREEN BLUE и ALPHA (смотри класс BitmapDataChannel) Белый цвет 0xffffff 255 по первым трем каналам, черный 0. Открой в Паинте ColorPicker (выбор цвета по палитре) и ты там заметишь, что любой цвет отражается тремя числами. Использовать в фильтре дисплейса можно как один и тот же канал, так и два разных канала (например чтобы по оси х картинку растягивать, а по у сжимать) А как уж ты нарисовал картинку для искажения - это уже другой вопрос. ALPHA 0 - непрозрачный, 255 - абсолютно прозрачный.


Последний раз редактировалось Rzer; 12.11.2008 в 01:23.
Старый 12.11.2008, 01:34
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 9  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
Сообщение от Rzer Посмотреть сообщение
Любой цвет формируется по четырем каналам RED GREEN BLUE и ALPHA (смотри класс BitmapDataChannel) Белый цвет 0xffffff 255 по первым трем каналам, черный 0. Открой в Паинте ColorPicker (выбор цвета по палитре) и ты там заметишь, что любой цвет отражается тремя числами. Использовать в фильтре дисплейса можно как один и тот же канал, так и два разных канала (например чтобы по оси х картинку растягивать, а по у сжимать) А как уж ты нарисовал картинку для искажения - это уже другой вопрос. ALPHA 0 - непрозрачный, 255 - абсолютно прозрачный.
Что такое RBG я знаю . То что ты написал, я понимаю так: Если я использую канал RED, то мой фильтр не изменится от того что mapBitmap будет цвета 0xff0000 или 0xffffff. Но если я могу прописать разные опции для разных каналов, то как выбирать эти каналы???

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

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Цитата:
То что ты написал, я понимаю так: Если я использую канал RED, то мой фильтр не изменится от того что mapBitmap будет цвета 0xff0000 или 0xffffff.
Да все так.

Код AS3:
var f=new DisplacementMapFilter(new BitmapData(bmpData.width,bmpData.height) ,new Point(0,0), BitmapDataChannel.RED, BitmapDataChannel.BLUE, 200, 200, DisplacementMapFilterMode.IGNORE);
 
.
для x - канал красный, для y синий

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

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

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


 


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


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