package { import com.gskinner.motion.GTween; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.view.AbstractView; import org.papervision3d.view.BasicView; import mx.effects.easing.Quadratic; import flash.display.StageAlign; import flash.display.StageQuality; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; /** * @author Kelvin Luck */ [SWF(width='400', height='400', backgroundColor='#A4A4A4', frameRate='30')] public class ScoreTest extends BasicView { public static const NUM_PANELS:int = 6; public static const PADDING:int = 5; private var _scorePanels:Array; private var _scoresHolder:DisplayObject3D; private var _rotateToMouse:Boolean; private var _unrotateTween:GTween; public function ScoreTest() { super(stage.stageWidth, stage.stageHeight, true); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.quality = StageQuality.HIGH; initScorePanels(); stage.addEventListener(MouseEvent.CLICK, onStageClick); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(event:Event):void { onRenderTick(); if (_rotateToMouse) { var mouseOffsetX:Number = (stage.stageWidth / 2 - stage.mouseX)/stage.stageWidth; var mouseOffsetY:Number = (stage.stageHeight / 2 - stage.mouseY) / stage.stageHeight; var dY:Number = -2 * mouseOffsetX; var dX:Number = -2 * mouseOffsetY; _scoresHolder.rotationY += dY - (_scoresHolder.rotationY / 8); _scoresHolder.rotationX += dX - (_scoresHolder.rotationX / 8); } } private function onKeyDown(event:KeyboardEvent):void { _rotateToMouse = !_rotateToMouse; if (!_rotateToMouse) { _unrotateTween.setProperties({rotationY:0, rotationX:0}); } } private function initScorePanels():void { _scorePanels = []; var i:int = 0; var n:int = NUM_PANELS; var scorePanel:ScorePanel; _scoresHolder = new DisplayObject3D(); _scoresHolder.y = -Math.round(n * (ScorePanel.HEIGHT + PADDING) / 2); _unrotateTween = new GTween(_scoresHolder, .5, {}, {ease:Quadratic.easeOut}); var z:int = (camera.zoom * camera.focus) - Math.abs(camera.z); for (; i ' + _score + ']'; } }