Mutual Gravity
This example uses Mutual Gravity to attract the particles to each other. Each particle is attracted to every other particle by a gravitational force.
package { import org.flintparticles.twoD.emitters.Emitter2D; import org.flintparticles.twoD.renderers.BitmapRenderer; import flash.display.Sprite; import flash.filters.BlurFilter; import flash.geom.Rectangle; [SWF(width='400', height='400', frameRate='60', backgroundColor='#000000')] public class Main extends Sprite { private var emitter:Emitter2D; public function Main() { emitter = new MutualG(); var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 400, 400 ) ); renderer.addFilter( new BlurFilter( 2, 2, 1 ) ); renderer.addEmitter( emitter ); addChild( renderer ); emitter.start( ); } } }
package { import org.flintparticles.common.counters.Blast; import org.flintparticles.common.displayObjects.Dot; import org.flintparticles.common.initializers.ColorInit; import org.flintparticles.common.initializers.SharedImage; import org.flintparticles.twoD.actions.BoundingBox; import org.flintparticles.twoD.actions.Move; import org.flintparticles.twoD.actions.MutualGravity; import org.flintparticles.twoD.actions.SpeedLimit; import org.flintparticles.twoD.emitters.Emitter2D; import org.flintparticles.twoD.initializers.Position; import org.flintparticles.twoD.zones.RectangleZone; public class MutualG extends Emitter2D { public function MutualG() { counter = new Blast( 40 ); addInitializer( new SharedImage( new Dot( 2 ) ) ); addInitializer( new ColorInit( 0xFFFF00FF, 0xFF00FFFF ) ); addInitializer( new Position( new RectangleZone( 10, 10, 380, 380 ) ) ); addAction( new MutualGravity( 10, 500, 3 ) ); addAction( new BoundingBox( 0, 0, 400, 400 ) ); addAction( new SpeedLimit( 150 ) ); addAction( new Move() ); } } }
import org.flintparticles.common.counters.*; import org.flintparticles.common.displayObjects.Dot; import org.flintparticles.common.initializers.*; import org.flintparticles.twoD.actions.*; import org.flintparticles.twoD.emitters.Emitter2D; import org.flintparticles.twoD.initializers.*; import org.flintparticles.twoD.renderers.*; import org.flintparticles.twoD.zones.*; var emitter:Emitter2D = new Emitter2D(); emitter.counter = new Blast( 40 ); emitter.addInitializer( new SharedImage( new Dot( 2 ) ) ); emitter.addInitializer( new ColorInit( 0xFFFF00FF, 0xFF00FFFF ) ); emitter.addInitializer( new Position( new RectangleZone( 10, 10, 380, 380 ) ) ); emitter.addAction( new MutualGravity( 10, 500, 3 ) ); emitter.addAction( new BoundingBox( 0, 0, 400, 400 ) ); emitter.addAction( new SpeedLimit( 150 ) ); emitter.addAction( new Move() ); var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 400, 400 ) ); renderer.addFilter( new BlurFilter( 2, 2, 1 ) ); renderer.addEmitter( emitter ); addChild( renderer ); emitter.start( );
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:f="http://flintparticles.org/2009/flint2d" xmlns:filters="flash.filters.*" width="400" height="400" backgroundColor="#000000"> <f:BitmapRenderer id="renderer" width="400" height="400"> <f:preFilters> <filters:BlurFilter blurX="2" blurY="2" quality="1"/> </f:preFilters> <f:emitters> <f:Emitter id="emitter" autoStart="true"> <f:counter> <f:Blast startCount="40"/> </f:counter> <f:initializers> <f:Position> <f:RectangleZone left="10" right="390" top="10" bottom="390"/> </f:Position> <f:SharedImage> <f:Dot radius="2"/> </f:SharedImage> <f:ColorInit minColor="0xFFFF00FF" maxColor="0xFF00FFFF"/> </f:initializers> <f:actions> <f:Move/> <f:MutualGravity power="10" maxDistance="500" epsilon="3"/> <f:SpeedLimit limit="150"/> <f:BoundingBox left="0" right="400" top="0" bottom="400"/> </f:actions> </f:Emitter> </f:emitters> </f:BitmapRenderer> </s:Application>