Reflejo Agua | Water Reflex AS3
El ejemplo se ve cortado por el shadowbox.
Code (open/close):
package com.pcornejo { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.filters.DisplacementMapFilter; import flash.filters.DisplacementMapFilterMode; import flash.geom.Point; /** * Reflejo Agua * @author Patricio Cornejo * @link www.pcornejo.com */ [SWF(width = "750", height = "501", backgroundColor = "0x000000")] public class Main extends Sprite { [Embed(source = "../../../lib/lago.jpg")] private var Lago:Class; [Embed(source = "../../../lib/agua.png")] private var Agua:Class; private var lake:Bitmap; private var water:Bitmap; private var pt1:Point; private var pt2:Point; private var pt3:Point; private var ola1:BitmapData; private var ola2:BitmapData; private var ola3:BitmapData; private var dm1:DisplacementMapFilter; private var dm2:DisplacementMapFilter; private var dm3:DisplacementMapFilter; public function Main():void { addEventListener(Event.ADDED_TO_STAGE, configUI); } private function configUI(e:Event):void { cargarFotos(); configReflex(); addEventListener(Event.ENTER_FRAME, efectoReflex); } private function cargarFotos():void { lake = new Lago(); water = new Agua(); water.y = stage.stageHeight - water.height; addChild(lake); addChild(water); } private function configReflex():void { pt1 = new Point(); //pt2 = new Point(); //pt3 = new Point(); ola1 = new BitmapData(stage.stageWidth, water.height); //ola2 = new BitmapData(stage.stageWidth, water.height); //ola3 = new BitmapData(stage.stageWidth, water.height); dm1 = new DisplacementMapFilter(ola1, new Point(0, 10), 0, 4, 0, 10, DisplacementMapFilterMode.CLAMP); //dm2 = new DisplacementMapFilter(ola2, new Point(0, 40), 0, 4, 0,50, DisplacementMapFilterMode.CLAMP); //dm3 = new DisplacementMapFilter(ola3, new Point(0, 20), 0, 4, 0, 50, DisplacementMapFilterMode.CLAMP); } private function efectoReflex(e:Event):void { pt1.y -= .2; //pt2.y -= .4; pt3.y -= .8; ola1.perlinNoise(40, 5, 1, 0, true, true, 4, true, [pt1]); //ola2.perlinNoise(40, 4, 2, 0, true, true, 4, true, [pt2]); //ola3.perlinNoise(80, 8, 1, 0, true, false, 4, true, [pt3]); water.filters = [dm1]; } } }
