package { import flash.display.*; import flash.events.*; import org.cornflex.pv3d.Mouse2D; import org.papervision3d.cameras.*; import org.papervision3d.materials.*; import org.papervision3d.objects.*; import org.papervision3d.scenes.*; [SWF(width="427", height="371")] public class main extends Sprite { private var container:Sprite; private var scene:Scene3D; private var camera:FreeCamera3D; private var mouse2D:Mouse2D; public function main() { stage.quality = StageQuality.MEDIUM; stage.scaleMode = "noScale"; stage.align = "TL"; stage.addEventListener(Event.RESIZE, centerScene); init3D(); this.addEventListener( Event.ENTER_FRAME, loop3D ); } public function init3D():void { container = new Sprite(); container.x = (stage.stageWidth)/2; container.y = (stage.stageHeight)/2; addChild( container ); mouse2D = new Mouse2D(container, 10); scene = new Scene3D( container ); camera = new FreeCamera3D(); camera.z = 0; camera.focus = 180; var material:BitmapFileMaterial = new BitmapFileMaterial("http://www.cornflex.org/files/sphericVR/textures/car.jpg"); material.smooth = true; var sphere:Ase = new Ase(material, "http://www.cornflex.org/files/sphericVR/ase/sphere.ase", 0.08); scene.addChild( sphere ); } public function loop3D(event:Event):void { camera.rotationX = mouse2D.displaceX; camera.rotationY = -mouse2D.displaceY; scene.renderCamera( camera ); } private function centerScene(event:Event):void { container.x = (stage.stageWidth)/2; container.y = (stage.stageHeight)/2; } } }