Archive for November 26th, 2008
Glow Filter on a ViewportLayer
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(); } } }
Dancing Spheres
This was supposed to be something completely different
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); } } }
The State Pattern – source files
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.
Search
Recommended Books
Speaking at FITC Toronto
Recent Posts
- FDT Super Awesome March Deal
- haXe Tutorial
- AS3 Signals Tutorial
- Preferred Video Tutorial Resolution?
- TweenMax – Tweening a timeline (Advanced Tweening)
- Robotlegs + Flight + Union Platform
- Back in the saddle
- Eclipse Theme Designer Preview
- RobotLegs Hello World Video Tutorial
- 10 Things Every Senior Flash Developer Should Know
- Efflex – 3D Effects for Flex
- MorphController – Mighty Morphing Papervision3D
- End dump
- Test if a plane is within the view of the camera (aka testing if culled)
- Materials Reference
Recent Comments
- John Lindquist on ActionScript 3 – Model View Controller (MVC)
- Bruno Fonzi on FDT Super Awesome March Deal
- KD on ActionScript 3 – Model View Controller (MVC)
- BAM5 on haXe Tutorial
- AlexG on Finding 2D Coordinates of a DisplayObject3D
- Josh on ActionScript 3 – Model View Controller (MVC)
- martin everett on requests
- martin everett on requests
- lillacska on Dragging Spheres
- Guy Ritchie on MXML without the Flex framework
Categories
Archives
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



