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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

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

Регистрация: Jun 2009
Сообщений: 16
По умолчанию Эффект водяных разводов

Я во flash новичок. На самом деле я программист по многим другим веб-языкам. Схватываю все быстро. Подскажите, хотя бы советом как сделать эффект водяных(маслянных) разводов. Объяснять долго, посмотрите на сайте total-chel.ru. Там в банере надо мышкой поводить...
Вобщем суть повторить такое, как на сайте.
Заранее благодарен!

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

Регистрация: Sep 2002
Сообщений: 30,787
http://silin.fatal.ru/#AS2/ripple

Старый 26.06.2009, 20:43
greatilya вне форума Посмотреть профиль Отправить личное сообщение для greatilya Найти все сообщения от greatilya
  № 3  
Ответить с цитированием
greatilya

Регистрация: Jun 2009
Сообщений: 16
Огромное спасибо.. уже разобрался практически)

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

Регистрация: Jun 2009
Сообщений: 16
Подскажите как сделать эффект похожий на МАСЛЯННЫЕ разводы? Они должны быть менее динамичными так сказать... И быстрее возвращаться в исходное состояние должна картинка.
вот код:
Код AS1/AS2:
import flash.display.BitmapData;
import flash.filters.ConvolutionFilter;
import flash.filters.DisplacementMapFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BitmapFilter;
 
class com.silin.Ripple extends MovieClip {
 
	private var res1 : BitmapData;
	private var res2 : BitmapData;
	private var map : BitmapData;
	private var buf : BitmapData;
 
	private var source : BitmapData;
	private var output : BitmapData;
	private var w : Number, h : Number, w2 : Number, h2 : Number;
 
	private var QUARTER : Rectangle;
	private var FULL : Rectangle;
	private var ORIGIN : Point;
	private var IDENTITY : Matrix;
	private var DOUBLE : Matrix;
	private var WAVE : BitmapFilter;
	private var DAMP : ColorTransform;
	private var water : DisplacementMapFilter ;
    ////////////////////////////
    public function Ripple(bitmap:BitmapData){
 
		source=bitmap;
    	w = source.width;
		h = source.height;
		output=new BitmapData(w,h, false, 128);
		attachBitmap(output,0);
		w2 = w / 2;
		h2 = h / 2;
		res1 = new BitmapData (w2, h2, false, 128);
		res2 = new BitmapData (w, h, false, 128);
		map = new BitmapData (w2, h2, false, 128);
		buf = new BitmapData (w2, h2, false, 128);
		WAVE = BitmapFilter(new ConvolutionFilter (3, 3, [1,1,1,1,1,1,1,1,1], 9, 0));
		DAMP = new ColorTransform (0, 0, 0.99609374, 1, 0, 0, 2, 0);
		water = new DisplacementMapFilter (res2, ORIGIN, 4, 4, 32, 32, "ignore");
		ORIGIN = new Point ();
		QUARTER = new Rectangle (0, 0, w2, h2);
		FULL = new Rectangle (0, 0, w, h);
		IDENTITY = new Matrix ();
		DOUBLE = new Matrix ();
		DOUBLE.a = DOUBLE.d = 2;
		start();
 
    }
 
    public function wobbleXY (x : Number, y : Number)	:Void   {
		x /= 2;
		y /= 2;
		map.setPixel (x + 1, y, 0xFFFFFF);
		map.setPixel (x - 1, y, 0xFFFFFF);
		map.setPixel (x, y + 1, 0xFFFFFF);
		map.setPixel (x, y - 1, 0xFFFFFF);
		map.setPixel (x, y, 0xFFFFFF);
	}
 
	private function render ():Void	{
		res1.applyFilter(map, QUARTER, ORIGIN, WAVE);
		res1.draw (res1, IDENTITY, null, "add");
		res1.draw (buf, IDENTITY, null, "difference");
		res1.draw (res1, IDENTITY, DAMP);
		res2.draw (res1, DOUBLE, null, null, null, true);
		output.applyFilter(source, FULL, ORIGIN, BitmapFilter(water));
		buf = map;
		map = res1.clone ();
	}
 
	public function start ():Void	{
		onEnterFrame=render;
	}
 
	public function randomWobble (n : Number):Void{
		if(n==undefined) n= w/3;
		start();
		for (var i = 0; i < n; i ++)
			wobbleXY (1 + random (w - 1) , 1 + random (h - 1));
 
	}
 
	public function stay ()	:Void{
		onEnterFrame=null;
	}
 
	public function clear ():Void{
		stay();
		res1 = new BitmapData (w2, h2, false, 128);
		res2 = new BitmapData (w, h, false, 128);
		map = new BitmapData (w2, h2, false, 128);
		buf = new BitmapData (w2, h2, false, 128);
		water = new DisplacementMapFilter (res2, ORIGIN, 4, 4, 32, 32, "ignore");
		render();
	}
	public function mouseWobble():Void	{
		start();
		wobbleXY(_xmouse,_ymouse);
	}
 
	public function onMouseMove(){
		if(!hitTest(_root._xmouse,_root._ymouse))return;
		onMouseMove=mouseWobble;
		mouseWobble();
	}
	public function onMouseUp()	{
		//onMouseMove=null;
	}
 
}
Ключевые как я понимаю тут строки эти:
Код AS1/AS2:
import flash.filters.DisplacementMapFilter;
private var water : DisplacementMapFilter ;
output.applyFilter(source, FULL, ORIGIN, BitmapFilter(water));
Как я понимаю кодключается некая библиотека "DisplacementMapFilter"...
Подскажите где можно найти параметры этих разводов....
Заранее благодарен... )

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

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

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


 


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


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