package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.display.GradientType; import flash.display.SpreadMethod; import flash.display.Sprite; import flash.display.MovieClip; import flash.filters.BitmapFilter; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.utils.Timer; import flash.filters.DisplacementMapFilter; import flash.filters.DisplacementMapFilterMode; import flash.geom.Matrix; import flash.geom.Point; import flash.text.TextField; import gs.TweenMax; import gs.easing.*; public class rain extends Sprite { private var m:mymap; private var img; private var mycover; private var bitmapData; private var displaceFilter; private var strengthX:Number = 70; private var strengthY:Number = 40; public function rain() { // draw(); m = new mymap(); img = new test(); mycover = new cover(); bitmapData = new BitmapData(img.width, img.height); var mapPoint = new Point(0, 0); displaceFilter = new DisplacementMapFilter(bitmapData, mapPoint, BitmapDataChannel.RED, BitmapDataChannel.BLUE, strengthX, strengthY, DisplacementMapFilterMode.CLAMP); addChild(m); addChild(img); addChild(mycover); //addEventListener(MouseEvent.MOUSE_MOVE, moveDisplacer); img["dot"].buttonMode =true; img["dot"].addEventListener(MouseEvent.MOUSE_DOWN, startDotDrag); // img["dot"].addEventListener(MouseEvent.MOUSE_UP, stopDotDrag); addEventListener(Event.ENTER_FRAME, drawFilters); var t:Timer = new Timer(300, 1000000); t.addEventListener(TimerEvent.TIMER, addDrop); t.start(); } private function addDrop(e:Event=null){ var r = new raindrop(); r.x = rand(0, 550); r.y = -50;// rand(0, 400); r.scaleX = r.scaleY = rand(10, 100) * 0.01; var s:Number = rand(2, 5) * 1; m.addChild(r); //TweenMax.to(r, s, {y: (400 - (r.height/2)), ease:Bounce.easeOut }); TweenMax.to(r, s, {y: (400 + (r.height/2)), ease:Expo.easeIn }); } private function rand(minVal:int, maxVal:int):int { return minVal + Math.floor(Math.random() * (maxVal + 1 - minVal)); } private function startDotDrag(e:Event=null){ addEventListener(MouseEvent.MOUSE_MOVE, dragDot); stage.addEventListener(MouseEvent.MOUSE_UP, stopDotDrag); } private function stopDotDrag(e:Event=null){ removeEventListener(MouseEvent.MOUSE_MOVE, dragDot); stage.removeEventListener(MouseEvent.MOUSE_UP, stopDotDrag); } private function dragDot(e:Event=null){ //img["dot"] img["dot"].x = mouseX ; img["dot"].y = mouseY ; } private function drawFilters(e:Event=null){ bitmapData.draw(m); img.filters = [displaceFilter]; } //var bmp = new flash.display.BitmapData(image_mc._width, image_mc._height); private function moveDisplacer(e:Event=null){ //m["displacer"].x = mouseX ; //m["displacer"].y = mouseY ; if( m["displacer"].y < 400){ m["displacer"].y += 10; }else{ m["displacer"].y = -220; } //mycover.x = mouseX ; //mycover.y = mouseY ; bitmapData.draw(m); } } }