package { import flash.display.Sprite; import flash.display.Bitmap; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.display.BitmapData; import com.rails2u.utils.BitmapUtil; import caurina.transitions.Tweener; import flash.events.Event; import flash.utils.getTimer; import flash.display.Shape; import flash.filters.BlurFilter; import com.rails2u.utils.DrawUtil; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.Loader; import flash.system.LoaderContext; import flash.geom.Matrix; import com.rails2u.utils.MathUtil; import flash.events.MouseEvent; import flash.geom.ColorTransform; import flash.filters.GlowFilter; [SWF(frameRate=60, background=0x111111)] public class Pe1 extends Sprite { public function Pe1() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; init(); } [Embed(source="image.jpg")] public var img:Class; private var bd:Bitmap; private var canvas:Bitmap; private var shapeLayer:Sprite = new Sprite; private var nowImpl:Function; private function init():void { this.x = 30; this.y = 30; bd = new img(); canvas = new Bitmap(new BitmapData(bd.width, bd.height, true, 0)); //var layer:Bitmap = new Bitmap(bd.bitmapData.clone()); //layer.alpha = 0.1; //addChild(layer); addChild(canvas); addChild(shapeLayer); addEventListener(Event.ENTER_FRAME, onEnterFrame); var cycle:Function = MathUtil.cycle(impl1, impl2, impl3); nowImpl = cycle(); stage.addEventListener(MouseEvent.MOUSE_DOWN, function(e:Event):void { nowImpl = cycle(); }); } private function onEnterFrame(e:Event):void { for (var i:uint = 0; i < 5; i++) { draw(); } } public function impl1(size:uint, shape:Shape):void { shape.graphics.drawRect(-size,-size,size,size); } public function impl2(size:uint, shape:Shape):void { DrawUtil.drawStar(shape.graphics, 0, 0, 5, size/2, size * 1.2, 'curve'); } public function impl3(size:uint, shape:Shape):void { shape.graphics.drawCircle(0, 0, size); //shape.graphics.drawRoundRect(-size, -size, size,size,size/2,size/2); } private function draw():void { var rx:uint = bd.width * Math.random(); var ry:uint = bd.height * Math.random(); var col:uint = bd.bitmapData.getPixel(rx, ry); var shape:Shape = new Shape(); //shape.graphics.beginFill(col, 1 * Math.random()); shape.graphics.beginFill(col, 0.9); var size:uint = (Math.max(2, 20 - Math.floor(getTimer() / 10000)) * Math.random()); shapeLayer.addChild(shape); nowImpl(size, shape); shape.x = 600; //shape.y = MathUtil.randomBetween(240,280); shape.y = 215; shape.alpha = 0.4; Tweener.addTween(shape, { alpha:1, x:rx, y:ry, rotation: Math.random() * 360 - 180, time:Math.random() * 2 + 2, onComplete: function():void { shape.parent.removeChild(shape); var m:Matrix = shape.transform.matrix; //m.translate(shape.x, shape.y); //shape.filters = []; canvas.bitmapData.draw(shape, m); shape = null; } }); //shape.filters = [new GlowFilter(0xFFFFFF,0.5)]; } } }