![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2009
Сообщений: 16
|
Я во flash новичок. На самом деле я программист по многим другим веб-языкам. Схватываю все быстро. Подскажите, хотя бы советом как сделать эффект водяных(маслянных) разводов. Объяснять долго, посмотрите на сайте total-chel.ru. Там в банере надо мышкой поводить...
Вобщем суть повторить такое, как на сайте. Заранее благодарен! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 16
|
Огромное спасибо.. уже разобрался практически)
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 16
|
Подскажите как сделать эффект похожий на МАСЛЯННЫЕ разводы? Они должны быть менее динамичными так сказать... И быстрее возвращаться в исходное состояние должна картинка.
вот код: 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; } } import flash.filters.DisplacementMapFilter; private var water : DisplacementMapFilter ; output.applyFilter(source, FULL, ORIGIN, BitmapFilter(water)); Подскажите где можно найти параметры этих разводов.... Заранее благодарен... ) |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|