Forked from: runouw's forked from: 雲海 diff:1 forked from: forked from: 雲海 雲海 * civet * @dreamana.com Razorblade forked:0favorite:1lines:95license : All rights reserved modified : 2009-05-10 07:49:36 Embed Tweet // forked from runouw's forked from: 雲海 // forked from civet's 雲海 /** * 雲海 * civet * @dreamana.com */ 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.events.Event; import flash.events.TimerEvent; import flash.filters.DropShadowFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; import flash.utils.Timer; [SWF(frameRate='24', backgroundColor='0x000000')] public class Sora extends Sprite { private var source:BitmapData; private var rect:Rectangle; private var seed:int; private var sx:Number; private var sy:Number; private var vx:Number; private var vy:Number; private var ax:Number; private var ay:Number; private var offset:Point; private var trans:ColorTransform; public function Sora() { createSky(stage.stageWidth, stage.stageHeight/2); createCloud(stage.stageWidth, stage.stageHeight/2); } private function createSky(w:uint, h:uint):void { var bg:Sprite = new Sprite(); var colors:Array = [0x09B6FF, 0xFFFFFF]; var alphas:Array = [1, 1]; var ratios:Array = [0x00, 0xFF]; var mat:Matrix = new Matrix(); mat.createGradientBox(w, h, Math.PI/2, 0, 0); bg.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, mat, SpreadMethod.PAD); bg.graphics.drawRect(0, 0, w, h); bg.graphics.endFill(); addChild(bg); createGround(w,h); } private function createGround(w:uint, h:uint):void { var bg:Sprite = new Sprite(); var colors:Array = [0x7CFF44, 0x2F9900]; var alphas:Array = [1, 1]; var ratios:Array = [0x00, 0xFF]; var mat:Matrix = new Matrix(); mat.createGradientBox(w, h, Math.PI/2, 0, 0); bg.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, mat, SpreadMethod.PAD); bg.graphics.drawRect(0, 0, w, h); bg.graphics.endFill(); bg.y = h; addChild(bg); } private function createCloud(w:uint, h:uint):void { source = new BitmapData(w, h, true, 0); var bmp:Bitmap = new Bitmap(source); addChild(bmp); //bmp.filters = [new DropShadowFilter(4, 45, 0xb3b3b3)]; rect = new Rectangle(0, 0, source.width, source.height); seed = Math.random()*100; offset = new Point(); trans = new ColorTransform(1,1,1,2, 255,255,255, -200); sx = 0; sy = 0; vx = Math.random()*8; vy = Math.random()*8; ax = Math.random()*0.02; ay = Math.random()*0.02; render(); //var t:Timer = new Timer(30); //t.addEventListener(TimerEvent.TIMER, render); //t.start(); addEventListener(Event.ENTER_FRAME, render); } private function render(e:Event=null):void { for(var i:int=0;i<5;i++){ sx += vx; sy += vy/10; //seed += 1; vx += ax; vy += ay; ax += Math.random()*0.02; ay += Math.random()*0.02; ax *= 0.9; ay *= 0.9; vx *= 0.95; vy *= 0.95; } offset.x = int(sx); offset.y = int(sy); source.perlinNoise(250, 100, 4, seed, false, false, BitmapDataChannel.ALPHA, false, [offset]); source.colorTransform(rect, trans); } } } Code Fullscreen Preview Fullscreen TUNCAYS offset source TimerEvent.ENTER_FRAME Rectangle addChild width height Math.PI Array addEventListener Math.random uint Sprite int Number