Archive for November 26th, 2008

Glow Filter on a ViewportLayer

Wednesday, November 26th, 2008 | snippets | Comments
package
{
	import flash.filters.GlowFilter;
 
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.view.layer.ViewportLayer;
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class GlowSnippet extends BasicView
	{
 
		public function GlowSnippet()
		{
			var material:ColorMaterial = new ColorMaterial(0xcc0000);
			var sphere:Sphere = new Sphere(material);
 
			var viewportLayer:ViewportLayer = new ViewportLayer(viewport, sphere);
			viewport.containerSprite.addLayer(viewportLayer);
 
			var glowFilter:GlowFilter = new GlowFilter(0xcccc00, 1, 20, 20, 4, 3);
			viewportLayer.filters = [glowFilter];
 
			scene.addChild(sphere);
 
			singleRender();
		}
	}
}

Tags: ,

Dancing Spheres

Wednesday, November 26th, 2008 | examples | Comments

This was supposed to be something completely different :)




source

package
{
	import flash.events.Event;
 
	import org.papervision3d.core.effects.BitmapColorEffect;
	import org.papervision3d.core.math.Number3D;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.view.layer.BitmapEffectLayer;
	import org.papervision3d.view.layer.ViewportLayer;
 
	[SWF(width="800", height="600", backgroundColor="#000000", frameRate="60")]
	public class DancingSpheres extends BasicView
	{
		private const LENGTH:Number = 2000;
		private var yellowSphere:Sphere;
 
 
		public function DancingSpheres()
		{
			super(800, 600);			
			camera.fov = 140;
 
			var light:PointLight3D = new PointLight3D();
			light.x = -1000, light.y = 1000;
 
			var yellowMaterial:FlatShadeMaterial = new FlatShadeMaterial(light, 0xcccc00);
			yellowSphere = new Sphere(yellowMaterial, 120);
 
			var redMaterial:FlatShadeMaterial = new FlatShadeMaterial(light, 0xcc0000);
			var redSphere:Sphere = new Sphere(redMaterial, 120);
			redSphere.x = -400;
 
			yellowSphere.addChild(redSphere);
 
			var bitmapEffectLayer:BitmapEffectLayer = new BitmapEffectLayer(viewport, 800, 600);
			bitmapEffectLayer.addDisplayObject3D(yellowSphere);
			bitmapEffectLayer.addDisplayObject3D(redSphere);
			bitmapEffectLayer.addEffect(new BitmapColorEffect());
			viewport.containerSprite.addLayer(bitmapEffectLayer);
 
			scene.addChild(yellowSphere);
 
			startRendering();
		}
 
		override protected function onRenderTick(event:Event=null):void
		{
			var ray:Number3D = camera.unproject(viewport.containerSprite.mouseX, viewport.containerSprite.mouseY);
			ray.normalize();
			ray.multiplyEq(LENGTH);
			ray = Number3D.add(ray, new Number3D(camera.x, camera.y, camera.z));
 
			var velocityX:Number = (ray.x - yellowSphere.x) * .1; 
			var velocityY:Number = (ray.y - yellowSphere.y) * .1; 
			var velocityZ:Number = (ray.z - yellowSphere.z) * .1; 
 
			yellowSphere.x += velocityX;
			yellowSphere.y += velocityY;
			yellowSphere.z += velocityZ;
 
			if(velocityX > 20) velocityX = 20;
			if(velocityX < -20) velocityX = -20;
 
			yellowSphere.roll(velocityX);
 
			renderer.renderScene(scene, camera, viewport);
		}
	}
}

Tags:

The State Pattern – source files

Wednesday, November 26th, 2008 | examples | Comments

I’m planning on doing a video tutorial on using the state pattern for better control over the state of your flash app. I put together what I’ll most likely use as the source files and I thought I’d share them here in case I don’t get around to making the video:

Part 1 – A typical “Document Class” approach to changing state
Focus on how it’s calling functions like “setStateAsWall()” to change state. Also notice how the .swf simply allows you to move from state to state.
View example
StatePattern – Part 1.zip

Part 2 – Adding the power of the State Pattern
Focus on how state is now changing using state.setStateAsWall(), then look into the individual State classes to set how they’re managing the state. In the .swf you’ll see you now how more control of how states move from state to state.
View example
StatePattern – Part 2.zip

Part 3 – Enforcing with an Interface
Focus on the interface “IState” (it’s like a class, but instead lists functions that any class that uses it has to have). Also notice that the State classes “implement” IState to enforce that they have the same functions. In the main class, you’ll see that they states are now typed as “IState”.
No change visually from part 2
StatePattern – Part 3.zip

I hope I get around to explaining this more later, but I thought I would push this up here before I go eat a bunch of turkey for Thanksgiving.

Tags: ,

Search

Recommended Books

Speaking at FITC Toronto

 

November 2008
M T W T F S S
    Dec »
 12
3456789
10111213141516
17181920212223
24252627282930

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 ...