ViewportLayer and sortMode “index” vs. “z”
If you need an object to ALWAYS be in front of other objects: put your objects in viewportLayers, give them a layerIndex, and set sortMode = ViewportLayerSortMode.INDEX_SORT:
package { import flash.events.Event; import flash.events.MouseEvent; import gs.TweenMax; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.view.BasicView; import org.papervision3d.view.layer.ViewportLayer; import org.papervision3d.view.layer.util.ViewportLayerSortMode; [SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")] public class ViewportLayersExample extends BasicView { private var headerText:headerContainer; private var redSphere:Sphere; private var greenPlane:Plane; public function ViewportLayersExample() { var infoText:headerContainer = new headerContainer(); infoText.header.text = "Click to toggle between sort modes \"z\" and \"index\""; addChild(infoText); headerText = new headerContainer(); headerText.y = 50; addChild(headerText); //placed at x:0, y:0, z:0 redSphere = new Sphere(new ColorMaterial(0xcc0000)); var sphereViewportLayer:ViewportLayer = new ViewportLayer(viewport, redSphere); viewport.containerSprite.addLayer(sphereViewportLayer); scene.addChild(redSphere); //placed at x:0, y:0, z:-500 greenPlane = new Plane(new ColorMaterial(0x00cc00)); var planeViewportLayer:ViewportLayer = new ViewportLayer(viewport, greenPlane); viewport.containerSprite.addLayer(planeViewportLayer); greenPlane.z = -500; scene.addChild(greenPlane); viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT; sphereViewportLayer.layerIndex = 1; planeViewportLayer.layerIndex = 2; var floor:Plane = new Plane(new WireframeMaterial(0x00cc00), 3000, 3000, 20, 20); floor.y = -200; floor.pitch(90); scene.addChild(floor); TweenMax.to(greenPlane, 5, {z:500, yoyo:true}); addEventListener(Event.ENTER_FRAME, enterFrameHandler); viewport.containerSprite.buttonMode = true; viewport.containerSprite.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { viewport.containerSprite.sortMode = (viewport.containerSprite.sortMode == ViewportLayerSortMode.INDEX_SORT) ? ViewportLayerSortMode.Z_SORT : ViewportLayerSortMode.INDEX_SORT; } private function enterFrameHandler(event:Event):void { headerText.header.text = "sphere.z= " + String(redSphere.z) +" sort mode= " + viewport.containerSprite.sortMode + " plane.z= " + String(int(greenPlane.z)); singleRender(); } } }
-
Joe
Search
Recommended Books
Speaking at FITC Toronto
Recent Posts
- Moving to johnlindquist.com
- AsyncCommand with Robotlegs, Signals, Flight, MinimalComps
- Search Widget – Robotlegs, Signals, Flight, Minimal Comps, Yahoo Astra
- 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
Recent Comments
- Ocatarinabelachichix on about
- Rajiv on faq
- Rajiv on 3ds max texture baking for Papervision3D
- Anupam Biswas on Maya Texture Baking
- Anupam Biswas on Maya Texture Baking
- Arindam Mojumder on requests
- Arindam Mojumder on requests
- Arindam Mojumder on Full Screen Cube
- Arindam Mojumder on faq
- Mimosa123321 on requests
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

