Forked from: feb19's SeaofSphere diff:1 forked from: SeaofSphere hacker_bovy2.. forked:0favorite:0lines:82license : All rights reserved modified : 2010-07-04 22:51:23 Embed Tweet // forked from feb19's SeaofSphere // write as3 code here.. package { import flash.display.BlendMode; import flash.display.MovieClip; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; /** * ... * @author Nobuhiro Takahashi */ [SWF(width="465", height="465", backgroundColor="#000000", frameRate=30)] public class SeaOfSphere extends Sprite { private var fl:Number = 300; private var vpX:Number; private var vpY:Number; private var world:Sprite = new Sprite(); private var spheres:Array = new Array(); public function SeaOfSphere() { vpX = this.stage.stageWidth / 2; vpY = this.stage.stageHeight / 2; addChild(world); var blend:Array = new Array(); blend = [ BlendMode.NORMAL, BlendMode.HARDLIGHT, BlendMode.DARKEN, BlendMode.MULTIPLY, BlendMode.ADD, BlendMode.DIFFERENCE, BlendMode.ERASE, BlendMode.INVERT, BlendMode.OVERLAY, BlendMode.SUBTRACT ]; var blur:BlurFilter = new BlurFilter(32, 32, 1); for (var i:int = 0; i < 30; i++) { var sphere:MovieClip = new MovieClip(); sphere.xpos = Math.random() * 200 - 100; sphere.ypos = Math.random() * -200; sphere.zpos = Math.random() * 100 - 50; sphere.startX = sphere.xpos; sphere.startY = sphere.ypos; sphere.startZ = sphere.zpos; sphere.r = Math.random() * 360 - 180; sphere.v = Math.random() * 1 - .5; var s:Shape = new Shape(); s.graphics.beginFill(Math.random() * 0x9fffff, 1); s.graphics.drawCircle(0, 0, Math.random() * 30 + 30); s.graphics.endFill(); s.filters = [blur]; //sphere.blendMode = blend[Math.floor(Math.random() * blend.length)]; sphere.blendMode = BlendMode.ADD; sphere.addChild(s); world.addChild(sphere); spheres.push(sphere); } addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { for (var i:int = 0; i < spheres.length; i++) { spheres[i].r += spheres[i].v; spheres[i].xpos = Math.cos(spheres[i].r / 180 * Math.PI) * 120 + spheres[i].startX; spheres[i].ypos = Math.sin(spheres[i].r / 180 * Math.PI) * -120 + spheres[i].startY; spheres[i].zpos = Math.sin(spheres[i].r / 180 * Math.PI) * 200 + spheres[i].startZ; } for (i = 0; i < spheres.length; i++) { var scale:Number = fl / (fl + spheres[i].zpos); spheres[i].scaleX = spheres[i].scaleY = scale; spheres[i].x = vpX + spheres[i].xpos * scale; spheres[i].y = vpY + spheres[i].ypos * scale; } spheres.sortOn("zpos", Array.DESCENDING); for (i = 0; i < spheres.length; i++) { world.setChildIndex(spheres[i], world.numChildren - 1); } } } } Code Fullscreen Preview Fullscreen