// papervision3D greate white // template v01 // kalle saas | http://kallesaas.com package { // flash import flash.display.Sprite; import flash.events.*; import flash.utils.*; import flash.text.TextField; // Papervision import org.papervision3d.cameras.FreeCamera3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; // Primitives import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Cone; // Materials import org.papervision3d.materials.shadematerials.FlatShadeMaterial; import org.papervision3d.materials.ColorMaterial; // needed for flat shader import org.papervision3d.lights.PointLight3D; // interactive import org.papervision3d.events.InteractiveScene3DEvent; import org.papervision3d.core.utils.InteractiveSceneManager; import org.papervision3d.core.utils.Mouse3D; // tweener import caurina.transitions.*; public class LearningMouse3D extends Sprite { // papervision3D private var viewport:Viewport3D; private var scene:Scene3D; private var camera:FreeCamera3D; private var renderer:BasicRenderEngine; // Primitives private var objPlane:Plane; private var objCone:Cone; // material private var flmat:FlatShadeMaterial; // light private var pointLight:PointLight3D; // interactive private var mouse3D:Mouse3D; /** * Konstruktor * @return */ public function LearningMouse3D() { init(); } private function init():void { initPapervision(); initMaterials(); initObjects(); initListeners(); initAnimation(); } /** * Alles was zum erstellen benötigt wird. * Viewport3D, scene, camera, renderer */ private function initPapervision():void { // define viewport with interactivity. viewport = new Viewport3D( 800, 600, true, true ); // enable the mouse Mouse3D.enabled = true; addChild( viewport); scene = new Scene3D(); camera = new FreeCamera3D(); renderer = new BasicRenderEngine(); // point light pointLight = new PointLight3D(true); pointLight.y = 1500; } /** * Erstelle alle Materialien die benötigt werden: */ private function initMaterials():void { // PlaneMaterial flmat = new FlatShadeMaterial(pointLight, 0x00ccff); flmat.interactive = true; } /** * Erstelle alle Objekte */ private function initObjects():void { objPlane = new Plane(flmat, 450, 450, 10, 10); scene.addChild(objPlane, 'objPlane') objPlane.rotationX = -90 objCone = new Cone(new FlatShadeMaterial(pointLight, 0xFF0000), 30, 100, 8, 6 ) objCone.rotationZ = 180; objCone.y = 50; scene.addChild(objCone) camera.y = 500 camera.lookAt(objPlane) camera.focus = 600 } /** * Initiiere alle EventListener. */ private function initListeners():void { addEventListener( Event.ENTER_FRAME, onEnterFrame ); // event listener for the plane objPlane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, mouseClick); } /** * Initiiere die EventListener für Animationen. */ private function initAnimation():void { addEventListener( Event.ENTER_FRAME, rotateObject ); } /*_________________________________________________________________________ * Funktionen für EventListener */ private function onEnterFrame( e:Event ):void { renderer.renderScene( scene, camera, viewport ); } private function mouseClick(event:InteractiveScene3DEvent):void { var x = getChildByName('iMouseX') var y = getChildByName('iMouseY') var z = getChildByName('iMouseZ') x.text = viewport.interactiveSceneManager.mouse3D.x y.text = viewport.interactiveSceneManager.mouse3D.y z.text = viewport.interactiveSceneManager.mouse3D.z Tweener.addTween(objCone,{x: viewport.interactiveSceneManager.mouse3D.x , y: viewport.interactiveSceneManager.mouse3D.y + 50, z: viewport.interactiveSceneManager.mouse3D.z , time:.5, transition:"easeOutExpo"}); // objCone.x = viewport.interactiveSceneManager.mouse3D.x // objCone.y = viewport.interactiveSceneManager.mouse3D.y + 50 // objCone.z = viewport.interactiveSceneManager.mouse3D.z // getting the virtual mouse positions. RangeX: 0 - 1, RangeY: 0 - 1; var xV = getChildByName('VirtualMouseX') var yV = getChildByName('VirtualMouseY') var zV = getChildByName('VirtualMouseZ') xV.text = viewport.interactiveSceneManager.virtualMouse.x yV.text = viewport.interactiveSceneManager.virtualMouse.y //zV.text = viewport.interactiveSceneManager.virtualMouse.z } /*_________________________________________________________________________ * Funktionen für Animationen */ private function rotateObject( e:Event ):void { } } }