package { import away3d.containers.*; import away3d.core.base.*; import away3d.core.math.*; import away3d.core.render.Renderer; import away3d.events.*; import away3d.materials.*; import away3d.primitives.*; import com.bit101.components.*; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.utils.getTimer; [SWF(width="500", height="400", frameRate="60", backgroundColor="#FFFFFF")] public class SphereTri extends Sprite { private var View:View3D; private var baseObject:Sphere; private var swfStage:Stage; private var cover:Cover; private var planeComplexity:Number = 0; private var label2:Label; private var lastTime:Number; public function SphereTri() { super(); // prep for handling resizing events swfStage = this.stage; swfStage.scaleMode = StageScaleMode.NO_SCALE; swfStage.align = StageAlign.TOP; // create a 3D-viewport View = new View3D({x:250, y:200}); View.renderer = Renderer.BASIC; // add viewport to the stage addChild(View); View.camera.position = new Number3D(400, 500, 400); View.camera.lookAt( new Number3D(0, 0, 0) ); baseObject = new Sphere({material:"red#",radius:150,segmentsW:6,segmentsH:4}); View.scene.addChild(baseObject); View.render(); addControls(); // only run when user is hovering cover = new Cover(this); addChild(cover); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(e:Event):void { if(!cover.visible) { View.render(); baseObject.rotationY += 1; var fps:Number = Math.floor( 1000/(getTimer()-lastTime) ); label2.text = ( (6+planeComplexity)*(4+planeComplexity-1)*2 )+" Triangles (fps: "+fps+")"; lastTime = getTimer(); } } private function addControls():void { var pad:Number = 10; var label1:Label = new Label(this, pad, pad); label1.autoSize = false; label1.width = 140; label1.text = "Increase/decrease complexity"; var plusButt:PushButton = new PushButton(this, pad, label1.height+label1.y, "+", increaseComplexity); plusButt.width = plusButt.height = 20; var minButt:PushButton = new PushButton(this, 50, label1.height+label1.y, "-", decreaseComplexity); minButt.width = minButt.height = 20; label2 = new Label(this, pad, pad); label2.autoSize = false; label2.width = 140; label2.y = 50; addChild(label1); addChild(label2); addChild(plusButt); addChild(minButt); } private function decreaseComplexity(e:MouseEvent):void { planeComplexity > 0 ? planeComplexity -= 1 : planeComplexity = 0; baseObject.segmentsW = 6+planeComplexity; baseObject.segmentsH = 4+planeComplexity; } private function increaseComplexity(e:MouseEvent):void { planeComplexity += 1; baseObject.segmentsW = 6+planeComplexity; baseObject.segmentsH = 4+planeComplexity; } } }