Archive for November 20th, 2008

ViewportLayer and sortMode “index” vs. “z”

Thursday, November 20th, 2008 | examples | Comments

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:

View example
source

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();
		}
	}
}

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