Section 1
//Rippler (be.nascom.flash.graphics.Rippler)
package be.nascom.flash.graphics {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;
public class Rippler {
private var _origin:Point;
private var _colourTransform:ColorTransform;
private var _defData:BitmapData;
private var _expandFilter:ConvolutionFilter;
private var _filter:DisplacementMapFilter;
private var _drawRect:Rectangle;
private var _scaleInv:Number;
private var _matrix:Matrix;
private var _buffer1:BitmapData;
private var _buffer2:BitmapData;
private var _fullRect:Rectangle;
private var _source:DisplayObject;
public function Rippler(_arg1:DisplayObject, _arg2:Number, _arg3:Number=2){
var _local4:Number;
var _local5:Number;
_origin = new Point();
super();
_source = _arg1;
_scaleInv = (1 / _arg3);
_buffer1 = new BitmapData((_arg1.width * _scaleInv), (_arg1.height * _scaleInv), false, 0);
_buffer2 = new BitmapData(_buffer1.width, _buffer1.height, false, 0);
_defData = new BitmapData(_arg1.width, _arg1.height, false, 0x7F7F7F);
_local4 = (_defData.width / _buffer1.width);
_local5 = (_defData.height / _buffer1.height);
_fullRect = new Rectangle(0, 0, _buffer1.width, _buffer1.height);
_drawRect = new Rectangle();
_filter = new DisplacementMapFilter(_defData, _origin, BitmapDataChannel.BLUE, BitmapDataChannel.BLUE, _arg2, _arg2, "wrap");
_source.filters = [_filter];
_source.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
_expandFilter = new ConvolutionFilter(3, 3, [0.5, 1, 0.5, 1, 0, 1, 0.5, 1, 0.5], 3);
_colourTransform = new ColorTransform(1, 1, 1, 1, 128, 128, 128);
_matrix = new Matrix(_local4, 0, 0, _local5);
}
public function destroy():void{
_source.removeEventListener(Event.ENTER_FRAME, handleEnterFrame);
_buffer1.dispose();
_buffer2.dispose();
_defData.dispose();
}
public function drawRipple(_arg1:int, _arg2:int, _arg3:int, _arg4:Number):void{
var _local5:int;
var _local6:int;
_local5 = (_arg3 >> 1);
_local6 = (((_arg4 * 0xFF) & 0xFF) * _arg4);
_drawRect.x = ((-(_local5) + _arg1) * _scaleInv);
_drawRect.y = ((-(_local5) + _arg2) * _scaleInv);
_drawRect.width = (_drawRect.height = (_arg3 * _scaleInv));
_buffer1.fillRect(_drawRect, _local6);
}
public function getRippleImage():BitmapData{
return (_defData);
}
private function switchBuffers():void{
var _local1:BitmapData;
_local1 = _buffer1;
_buffer1 = _buffer2;
_buffer2 = _local1;
}
private function handleEnterFrame(_arg1:Event):void{
var _local2:BitmapData;
_local2 = _buffer2.clone();
_buffer2.applyFilter(_buffer1, _fullRect, _origin, _expandFilter);
_buffer2.draw(_local2, null, null, BlendMode.SUBTRACT, null, false);
_defData.draw(_buffer2, _matrix, _colourTransform, null, null, true);
_filter.mapBitmap = _defData;
_source.filters = [_filter];
_local2.dispose();
switchBuffers();
}
}
}//package be.nascom.flash.graphics
Section 2
//MainTimeline (vesiturrilaura_fla.MainTimeline)
package vesiturrilaura_fla {
import flash.display.*;
import flash.events.*;
import be.nascom.flash.graphics.*;
import flash.media.*;
public dynamic class MainTimeline extends MovieClip {
public var rect:Sprite;
public var rippler:Rippler;
public var my_sound:Sound;
public function MainTimeline(){
addFrameScript(0, frame1);
}
function frame1(){
my_sound = new IhanaAani();
my_sound.play(0, 99999);
rect = new Tur();
rect.x = 200;
rect.y = 200;
addChild(rect);
rippler = new Rippler(rect, 60, 6);
addEventListener(Event.ENTER_FRAME, myFunction);
}
public function myFunction(_arg1:Event){
if ((Math.random() * 500) < 10){
rippler.drawRipple((Math.random() * 400), (Math.random() * 400), 20, 1);
};
if ((Math.random() * 50) < 10){
rippler.drawRipple(rect.mouseX, rect.mouseY, 10, 1);
};
}
}
}//package vesiturrilaura_fla
Section 3
//IhanaAani (IhanaAani)
package {
import flash.media.*;
public dynamic class IhanaAani extends Sound {
}
}//package
Section 4
//Tur (Tur)
package {
import flash.display.*;
public dynamic class Tur extends MovieClip {
}
}//package