package { import away3d.containers.ObjectContainer3D; import away3d.containers.View3D; import away3d.debug.AwayStats; import away3d.primitives.WireframePlane; import flash.events.Event; import flash.geom.Vector3D; import flash.utils.getTimer; import org.flintparticles.common.actions.Age; import org.flintparticles.common.actions.Fade; import org.flintparticles.common.actions.ScaleImage; import org.flintparticles.common.counters.Steady; import org.flintparticles.common.displayObjects.RadialDot; import org.flintparticles.common.initializers.Lifetime; import org.flintparticles.integration.away3d.v4.A3D4Renderer; import org.flintparticles.integration.away3d.v4.initializers.A3D4DisplayObject; import org.flintparticles.threeD.actions.Move; import org.flintparticles.threeD.emitters.Emitter3D; import org.flintparticles.threeD.initializers.Velocity; import org.flintparticles.threeD.zones.BoxZone; [SWF(width='720',height='480',frameRate='60',backgroundColor='#000000')] public class Main extends View3D { private var particleRenderer:A3D4Renderer; private var emitter:Emitter3D; public function Main() { antiAlias = 4; var floor:WireframePlane = new WireframePlane(2000, 2000, 10, 10, 0x808080, 1, WireframePlane.ORIENTATION_XZ); floor.y = -300; scene.addChild(floor); // Create Particle Emitter emitter = new Emitter3D(); emitter.counter = new Steady(150); emitter.addInitializer(new Lifetime(2)); emitter.addInitializer(new Velocity(new BoxZone(100, 100, -200))); emitter.addInitializer(new A3D4DisplayObject(new RadialDot(10), true, 500)); emitter.addAction(new Age()); emitter.addAction(new Move()); emitter.addAction(new ScaleImage(0, 10)); emitter.addAction(new Fade(1, 0)); emitter.start(); var particleContainer:ObjectContainer3D = new ObjectContainer3D(); scene.addChild(particleContainer); particleRenderer = new A3D4Renderer(particleContainer); particleRenderer.addEmitter(emitter); addEventListener(Event.ENTER_FRAME, enterFrameHandler); addChild(new AwayStats(this)); } private function enterFrameHandler(ev:Event):void { // Camera Motion var time:Number = getTimer(); camera.x = 1000 * Math.sin(time / 3000); camera.z = 1000 * Math.cos(time / 3000); camera.y = 500 * Math.sin(time / 2500) + 400; camera.lookAt(new Vector3D()); // Particle Motion emitter.position.x = 500 * Math.sin(time / 500); emitter.position.z = 500 * Math.cos(time / 500); render(); } } }