Flint est un projet open source de générateur de particules en AS3. Le principe est de manipuler un flot de particules auxquelles s’appliquent de nombreuses propriétés et méthodes. La documentation est bien complète, l’utilisation simple. Loin de la mode 3d, je pense qu’il y a matière à faire des animations créatives avec Flint.
Un exemple :
Cliquez sur l’image pour lancer le flash ou ici, puis déplacer la souris pour repousser les particules
Le site de Flint.
Le code
package { import flash.display.Sprite; import flash.geom.Point; import flash.filters.BlurFilter; import flash.geom.Rectangle; import org.flintparticles.actions.*; import org.flintparticles.counters.*; import org.flintparticles.displayObjects.*; import org.flintparticles.emitters.Emitter; import org.flintparticles.initializers.*; import org.flintparticles.renderers.*; import org.flintparticles.zones.*; import org.flintparticles.activities.*; public class Fountain extends Sprite { public function Fountain() { var emitter:Emitter = new Emitter(); emitter.counter = new Steady( 30 ); emitter.addInitializer( new ImageClass( Dot, 5 ) ); emitter.addInitializer( new ColorInit( 0xFFFF33FF, 0xFFFFFF33 ) ); emitter.addInitializer( new Position( new PointZone( new Point( 0, 0 ) ) ) ); emitter.addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 260, 360, -3 * Math.PI/5, -2 * Math.PI / 5 ) ) ); emitter.addInitializer( new RotateVelocity( -4, 4 ) ); emitter.addInitializer( new Lifetime( 6 ) ); emitter.addAction( new MouseAntiGravity(200, 10) ); emitter.addAction( new Move() ); emitter.addAction( new Rotate() ); emitter.addAction( new Accelerate( 150, 150 ) ); emitter.addAction( new Age() ); emitter.addAction( new Scale( 0.1, 10 ) ); emitter.addAction( new DeathZone( new RectangleZone( -10, -10, 510, 510 ), true ) ); var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 500, 500 ) ); renderer.addFilter( new BlurFilter( 2, 2, 10 ) ); emitter.renderer = renderer; addChild( renderer ); emitter.x = 50; emitter.y = 510; emitter.start( ); } } }