package { /** * * Auteur: Vincent Helwig * Date: 14.10.2008 * Website: http://www.tsoin.com * Description: Papervision3D - Création d’un cube * **/ import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import net.hires.utils.Stats; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; [SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")] public class Papervision_002 extends Sprite { private var scene:Scene3D; private var camera:Camera3D; private var viewport:Viewport3D; private var renderer:BasicRenderEngine; private var cube:Cube; public function Papervision_002() { addEventListener(Event.ADDED_TO_STAGE, init); var __stats:Stats = new Stats(); __stats.width = 75; __stats.x = 525; addChild( __stats ); } private function init(event:Event):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; setupScene(); stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } private function setupScene():void { scene = new Scene3D(); camera = new Camera3D(); camera.x = 0; camera.y = 0 camera.z = -300; camera.focus = 50; camera.zoom = 10; viewport = new Viewport3D(600, 400); addChild( viewport ); renderer = new BasicRenderEngine(); var ml:MaterialsList = new MaterialsList({all: new WireframeMaterial( 0x00FF00, 1 )}); cube = new Cube(ml, 100, 100, 100, 3, 3, 3); scene.addChild( cube ); } private function onEnterFrame(event:Event):void { renderer.renderScene(scene, camera, viewport); } private function onMouseMove(event:Event):void { cube.rotationX = ( stage.mouseY * 180 ) / stage.stageHeight - 90; cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth - 90; } } }