All pastes #976860 Raw Edit

Jemand

public text v1 · immutable
·published 2008-04-08 13:49 UTC
rendered paste body
/*
 *  PAPER    ON   ERVIS  NPAPER ISION  PE  IS ON  PERVI IO  APER  SI  PA
 *  AP  VI  ONPA  RV  IO PA     SI  PA ER  SI NP PE     ON AP  VI ION AP
 *  PERVI  ON  PE VISIO  APER   IONPA  RV  IO PA  RVIS  NP PE  IS ONPAPE
 *  ER     NPAPER IS     PE     ON  PE  ISIO  AP     IO PA ER  SI NP PER
 *  RV     PA  RV SI     ERVISI NP  ER   IO   PE VISIO  AP  VISI  PA  RV3D
 *  ______________________________________________________________________
 *  papervision3d.org + blog.papervision3d.org + osflash.org/papervision3d
 */

// _______________________________________________________________________ HelloWorld

// This example creates a basic scene with
// a plane primitive and a loaded sphere.

package
{
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;



// Import Papervision3D
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.Ase;
import org.papervision3d.objects.Cube;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.MaterialsList;

public class main extends Sprite
{
	// ___________________________________________________________________ vars3D

	var container :Sprite;
	var scene     :Scene3D;
	var camera    :Camera3D;
	var sphere    :Ase;
	var plane     :DisplayObject3D;
	var mousePressStatus     :String;
	var shiftKeyIsPressed	:String;
	var params:Object = LoaderInfo(loaderInfo).parameters;
	// index.html?imageFileFront=images/metall.jpg&imageFileBack=images/rot2.JPG&imageFileTop=images/null.png&imageFileBottom=images/metall.jpg&imageFileLeft=images/rot3.JPG&imageFileRight=images/rot4.JPG&width=440&depth=220&height=560
    for (var prop in params) { 
        trace("params."+prop+" = "+params[prop]); 
    } 

	// ___________________________________________________________________ main

	function main()
	{
		init3D();

		// onEnterFrame
		this.addEventListener( Event.ENTER_FRAME, loop3D );
		stage.addEventListener( MouseEvent.MOUSE_UP,toogleMouseUp );
		stage.addEventListener( MouseEvent.MOUSE_DOWN,toogleMouseDown );
		stage.addEventListener( MouseEvent.MOUSE_WHEEL,mouseWheelHandler );
		stage.addEventListener( KeyboardEvent.KEY_DOWN, switchZoomMode);
		stage.addEventListener( KeyboardEvent.KEY_UP, switchZoomMode);
	}


	// ___________________________________________________________________ init3D
	function toogleMouseUp(e:MouseEvent):void
	{
		mousePressStatus = "false";
	}
	
	function toogleMouseDown(e:MouseEvent):void
	{
		mousePressStatus = "true";
	}	

	function switchZoomMode(e:KeyboardEvent):void
	{
		if (e.shiftKey){
			shiftKeyIsPressed = "true";
		} else {
			shiftKeyIsPressed = "null";
		}
	}	
	function mouseWheelHandler(e:MouseEvent):void {
        trace("mouseWheelHandler delta: " + e.delta);
		camera.z=(camera.z+(e.delta*10));
    }
	
	function init3D():void
	{
		// Create container sprite and center it in the stage
		container = new Sprite();
		addChild( container );
		container.x = stage.stageWidth*.5;
		container.y = stage.stageHeight*.5;

		// Create scene
		scene = new Scene3D( container );

		// Create camera
		camera = new Camera3D();
		camera.x=0;
		camera.y=0;
		camera.z=1000;

		// Add Earth sphere
		//addEarth();

		// Add space plane
		addBox();
	}



	// ___________________________________________________________________ loop

	function addBox():void
	{
	
		var size :Number = 500;
		var quality :Number = 5;
	
		// Materials
		/*
		var materials:MaterialsList = new MaterialsList(
		{
			front:  new BitmapFileMaterial( "images/rot1.JPG" ),
			back:   new BitmapFileMaterial( "images/rot2.JPG" ),
			right:  new BitmapFileMaterial( "images/rot3.JPG" ),
			left:   new BitmapFileMaterial( "images/rot4.JPG" ),
			top:    new BitmapFileMaterial( "images/null.png" ),
			bottom: new BitmapFileMaterial( "images/metall.jpg" )
		} );
		*/
		var materials:MaterialsList = new MaterialsList(
		{
			front:  new BitmapFileMaterial( params.picturePath+params.imageFileFront ),
			back:   new BitmapFileMaterial( params.picturePath+params.imageFileBack  ),
			right:  new BitmapFileMaterial( params.picturePath+params.imageFileRight  ),
			left:   new BitmapFileMaterial( params.picturePath+params.imageFileLeft  ),
			top:    new BitmapFileMaterial( params.picturePath+params.imageFileTop  ),
			bottom: new BitmapFileMaterial( params.picturePath+params.imageFileBottom  )
		} );		
		// Cube face settings
		// You can add or sustract faces to your selection. For examples: Cube.FRONT+Cube.BACK or Cube.ALL-Cube.Top.

		// On single sided materials, all faces will be visible from the inside.
		var insideFaces  :int = Cube.ALL-Cube.Top;

		// Front and back cube faces will not be created.
		//var excludeFaces :int = Cube.TOP;

		// Create the cube.
		cube = new Cube( materials, params.width, params.depth, params.height, quality, quality, quality, insideFaces);
		
		cube.x=0;
		cube.y=0;
		cube.z=0;
		
		scene.addChild( cube, "Cube" );
		
		var materials2:MaterialsList = new MaterialsList(
		{

			front:  new BitmapFileMaterial( "images/paper1.jpg" ),
			back:   new BitmapFileMaterial( "images/paper2.jpg" ),
			right:  new BitmapFileMaterial( "images/paper3.jpg" ),
			left:   new BitmapFileMaterial( "images/paper4.jpg" ),
			top:    new BitmapFileMaterial( "images/null.png" ),
			bottom: new BitmapFileMaterial( "images/paper5.jpg" )
		} );	
		var insideFaces2  :int = Cube.ALL;

		// Front and back cube faces will not be created.
		//var excludeFaces :int = Cube.TOP;

		// Create the cube.
		cube2 = new Cube( materials2, params.width, params.depth, params.height, quality, quality, quality, insideFaces2);
		
		cube2.x=0;
		cube2.y=0;
		cube2.z=0;
		
		scene.addChild( cube2, "Cube" );		
		cube.yaw(-30);
		cube2.yaw(-30);		


	}


	// ___________________________________________________________________ loop

	function loop3D(event:Event):void
	{
		// Move camera with the mouse
		//camera.x = -container.mouseX/0.2;
		//camera.y = container.mouseY/0.2;

		if((mousePressStatus == "true") && (shiftKeyIsPressed != "true")){
				trace("standard press - shitkeyValue : " + shiftKeyIsPressed);
				cube.rotationY = container.mouseX / -1.2;
				cube.rotationX = container.mouseY / -1.2;
				cube2.rotationY = container.mouseX / -1.2;
				cube2.rotationX = container.mouseY / -1.2;
		}else if((mousePressStatus == "true") && (shiftKeyIsPressed == "true")){
				camera.z=(1000+(-(container.mouseY*2)));
				trace("move camera x axis : " + camera.z);
		}else{
			// Rotate sphere around its own vertical axis
			cube.yaw( 2 );
			cube2.yaw( 2 );
		}
		scene.renderCamera( camera );
	}
}
}