Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как сделать эффект displacement? (http://www.flasher.ru/forum/showthread.php?t=85773)

pkfun 29.09.2006 23:20

Как сделать эффект displacement?
 
Пример эффекта "displacement"
Сделал с помощью проги CoolMovies. Но там это встроенный эффект. Мне интересно, как сделать в flash8 тоже самое. Подскажите как? :)

Хемуль 30.09.2006 00:48

2 pkfun:
Флешка сделана с помощью пиксельных трансформаций. Обьект BitmapData...
Perlin Noise с препроцессингом из 30 кадров, кажется...

pkfun 30.09.2006 02:43

Там оказалось, что авторы приложили, в отдельной папке код AS. Так что код у меня есть.
Используется: flash.display.BitmapData, flash.filters.DisplacementMapFilter, perlinNoise

Хемуль
Спасибо за ответ. :)

shaltay 30.09.2006 03:05

ого...

pkfun 30.09.2006 04:04

Ура! Все сделал. :)
ps. правда чтобы разобраться с кодом, все равно пришлось долго изучать help. Там какой-то сокращенный вариант и сильно привязаный к самой проге-редактору.

AcetoN. 01.10.2006 02:20

выложите плз код

Хемуль 01.10.2006 02:57

Цитата:

Сообщение от pkfun
Там какой-то сокращенный вариант и сильно привязаный к самой проге-редактору.

В смысле? Не совсем понял по поводу "проги-редактора"...

pkfun 01.10.2006 19:09

Программа редактор это собственно KoolMovies и есть. :) Для того чтобы было понятно как код завязан на эту программу, выкладываю вариант который лежит открыто в папке MotionScripts этой программы(разработчики в help сами указывают на эту папку, для тех кто хочет сам поэксперементировать со встроенными эффектами):
Код:

//В этой функции задаем параметры эффекта. Она выполняется ОДИН раз.
// main_init function
main_init = function(mc){
 subs_done = true;
 i1 = new flash.display.BitmapData(mc._width,mc._height,0,0x808080);
 i2 = i1.clone();
 perlin ? i2.perlinNoise(base_x,base_y,octaves,new Date(),0,1,6) : i2.noise(new Date());
 filter = [new flash.filters.DisplacementMapFilter(i1,i1.rectangle.topLeft,4,2,disp_x*2,disp_y*2,'color')];
 if (!out_effect) mc._alpha = 0;
}

//Это сам эффект. Выполняемся столько раз сколько надо.
//Первое срабатывание сильно искаженный объект, последнее нормальный.
// main_effect function
main_effect = function(mc,frame){
 p = frame / lastsubframe;
 if (!out_effect) p = 1 - p;
 i1.fillRect(i1.rectangle,0x80808080);
 i1.merge(i2,i2.rectangle,i2.rectangle.topLeft,0,p*256,p*256);
 mc.filters = filter;
 mc._alpha = 100-p*100;
 if (scaling) mc._xscale = mc._yscale = mc._alpha;
 if (frame == lastsubframe){
  mc.filters = undefined;
  end_effect = true;
  i2.dispose();
  i1.dispose();
 }
}

// sub_init function

sub_init = function(mc){
}

// sub_effect function

sub_effect = function(mc,frame){
}

Если убрать эффект PerlinNoise, тоже классный эффект получается. ;)


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

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