Merry Christmas!

Wednesday, December 24th, 2008 | examples


source

package
{
	import flash.events.Event;
	import flash.filters.BlurFilter;
	import flash.geom.Point;
 
	import org.flintparticles.common.counters.Steady;
	import org.flintparticles.common.displayObjects.RadialDot;
	import org.flintparticles.common.initializers.ImageClass;
	import org.flintparticles.common.initializers.ScaleImageInit;
	import org.flintparticles.twoD.actions.DeathZone;
	import org.flintparticles.twoD.actions.Move;
	import org.flintparticles.twoD.actions.RandomDrift;
	import org.flintparticles.twoD.emitters.Emitter2D;
	import org.flintparticles.twoD.initializers.Position;
	import org.flintparticles.twoD.initializers.Velocity;
	import org.flintparticles.twoD.renderers.DisplayObjectRenderer;
	import org.flintparticles.twoD.zones.LineZone;
	import org.flintparticles.twoD.zones.PointZone;
	import org.flintparticles.twoD.zones.RectangleZone;
	import org.papervision3d.core.effects.view.ReflectionView;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.special.Letter3DMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.typography.Text3D;	
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class MerryChristmas extends ReflectionView
	{
		private var pivotPoint:DisplayObject3D = new DisplayObject3D();
 
		public function MerryChristmas()
		{
			viewportReflection.filters = [new BlurFilter(3,3,1)];
			setReflectionColor(.5, .5, .5);
			surfaceHeight = -80;
 
			setupText();
			setupSnow();
			setupTree();
 
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		private function setupText():void
		{
			var rockwell:Rockwell = new Rockwell();
			var merryMaterial:Letter3DMaterial = new Letter3DMaterial(0xcc0000);
			var merry:Text3D = new Text3D("MERRY", rockwell, merryMaterial);
 
			var christmasMaterial:Letter3DMaterial = new Letter3DMaterial(0x00cc00);
			var christmas:Text3D = new Text3D("CHRISTMAS", rockwell, christmasMaterial);
 
			merry.z = -700;
			christmas.z = 500;
			christmas.rotationY = 180;
 
			pivotPoint.addChild(merry);
			pivotPoint.addChild(christmas);
 
			scene.addChild(pivotPoint);
		}
 
		private function setupTree():void
		{
			var radius:Number = 300;
			var height:Number = 500;
			var total:uint = 100;
			var looker:DisplayObject3D = new DisplayObject3D();
			for(var i:int = 0; i < total; i++)
			{
				var material:ColorMaterial;
				if((i & 1) == 0) material = new ColorMaterial(0xaa0000);
				else material = new ColorMaterial(0x00aa00);
				material.doubleSided = true;
				var plane:Plane = new Plane(material, 30, 30, 1, 1);
				plane.x = Math.cos(i) * (radius - i * 3);
				plane.z = Math.sin(i) * (radius - i * 3);
				plane.y = i / total * height; 
				looker.copyPosition(plane);
				looker.x = looker.z = 0;
				plane.lookAt(looker);
				pivotPoint.addChild(plane);
			}
		}
 
		private function setupSnow():void
		{
			var emitter:Emitter2D = new Emitter2D();
			emitter.counter = new Steady(100);
 
			emitter.addInitializer(new ImageClass(RadialDot, 2));
			emitter.addInitializer(new Position(new LineZone(new Point(-5,-5), new Point(645, -5))));
			emitter.addInitializer(new Velocity(new PointZone(new Point(0, 65))));
			emitter.addInitializer(new ScaleImageInit(0.75, 2));
 
			emitter.addAction(new Move());
			emitter.addAction(new DeathZone(new RectangleZone(-10, -10, 640, 250), true));
			emitter.addAction(new RandomDrift(15, 15));
 
			var flintRenderer:DisplayObjectRenderer = new DisplayObjectRenderer();
			addChild(flintRenderer);
			flintRenderer.addEmitter(emitter);
 
			emitter.start();
		}
 
		private function enterFrameHandler(event:Event):void
		{
			pivotPoint.rotationY += (viewport.containerSprite.mouseX - pivotPoint.rotationY) * .01;
			singleRender();
		}
	}
}

Tags: , , ,

  • Very nice example, John! Really easy to follow, but packed with tricks and effects. Happy Xmas
blog comments powered by Disqus

Search

Recommended Books

Speaking at FITC Toronto

Recent Comments

 

December 2008
M T W T F S S
« Nov   Jan »
1234567
891011121314
15161718192021
22232425262728
293031  

Preferred Video Tutorial Resolution

  • 1024x768 (53%, 85 Votes)
  • 1280x1024 (15%, 24 Votes)
  • 1920x1080 (15%, 24 Votes)
  • 800x600 (13%, 20 Votes)
  • 480x320 (4%, 6 Votes)
  • 640x480 (0%, 2 Votes)

Total Voters: 160

Loading ... Loading ...