package { import flash.events.Event; import flash.display.*; import org.papervision3d.scenes.*; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import org.papervision3d.cameras.Camera3D; import flash.display.StageScaleMode; import flash.display.Stage; public class TeaPot extends Sprite { private var container:MovieClip; protected var scene : Scene3D; protected var camera : Camera3D; protected var rootNode : DisplayObject3D; /** * Constructeur */ function TeaPot() { init(); } /** * Initialisation du document */ private function init():void { var s:Stage = stage; s.scaleMode = StageScaleMode.NO_SCALE; setupScene(); addEventListener(Event.ENTER_FRAME, onEnterFrame); } /** * Construction de la scène */ private function setupScene():void { //Création du container de la scène container = new MovieClip(); addChild( container ) ; //On place le container container.x = 250; container.y = 200; //Création de la scène scene = new MovieScene3D( container ); //Création de l'objet rootNode //qui va contenir tous les DisplayObject3D var rootNode:DisplayObject3D = new DisplayObject3D(); scene.addChild( rootNode , "rootNode"); //Création et placement d'une caméra camera = new Camera3D(); camera.y = 0; camera.x = 0; camera.z = -1900; camera.zoom = 10; camera.sort = false; //Création du teaPot. //On indique sont chemin, //son materiel (déja dans mentionné dans le .dae) //et sa taille var teaPot:Collada = new Collada("teePot.dae", null, .1); teaPot.x = 0; teaPot.y = -100; rootNode.addChild( teaPot , "teaPot"); } /** * A chaque nouvelle Frame, on réoriente la caméra * et on fait le rendu. */ private function onEnterFrame( e : Event ) : void { camera.x += ( ( -container.mouseX * 5 ) - camera.x ) ; camera.y += ( ( -container.mouseY * 5 ) - camera.y ) ; scene.renderCamera( camera ); } } }