From 735007a6ede6c45e6be5f8ae660b25b4e59e8aa9 Mon Sep 17 00:00:00 2001 From: PrimaryFeather Date: Thu, 18 Aug 2011 22:08:34 +0200 Subject: [PATCH] exposing Starling viewPort (closes #19) --- samples/demo/src/Startup.as | 2 ++ starling/src/starling/core/Starling.as | 33 ++++++++++++++++---------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/samples/demo/src/Startup.as b/samples/demo/src/Startup.as index bf2a2a972..e87406856 100644 --- a/samples/demo/src/Startup.as +++ b/samples/demo/src/Startup.as @@ -1,6 +1,7 @@ package { import flash.display.Sprite; + import flash.display.StageScaleMode; import starling.core.Starling; @@ -11,6 +12,7 @@ package public function Startup() { + stage.scaleMode = StageScaleMode.NO_SCALE; Starling.multitouchEnabled = true; mStarling = new Starling(Game, stage); diff --git a/starling/src/starling/core/Starling.as b/starling/src/starling/core/Starling.as index 57e9675ea..ba5d49da2 100644 --- a/starling/src/starling/core/Starling.as +++ b/starling/src/starling/core/Starling.as @@ -90,7 +90,6 @@ package starling.core stage.addEventListener(touchEventType, onTouch, false, 0, true); // register other event handlers - stage.addEventListener(Event.RESIZE, onResize, false, 0, true); stage.addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true); stage.addEventListener(KeyboardEvent.KEY_UP, onKey, false, 0, true); @@ -115,10 +114,8 @@ package starling.core if (mContext) return; mContext = mStage3D.context3D; - mStage3D.x = mViewPort.x; - mStage3D.y = mViewPort.y; mContext.enableErrorChecking = mEnableErrorChecking; - mContext.configureBackBuffer(mViewPort.width, mViewPort.height, mAntiAliasing, false); + updateViewPort(); trace("[Starling] Initialization complete."); trace("[Starling] Display Driver:" + mContext.driverInfo); @@ -139,6 +136,15 @@ package starling.core mStage.addChild(rootObject); } + private function updateViewPort():void + { + if (mContext) + mContext.configureBackBuffer(mViewPort.width, mViewPort.height, mAntiAliasing, false); + + mStage3D.x = mViewPort.x; + mStage3D.y = mViewPort.y; + } + public function makeCurrent():void { sCurrent = this; @@ -171,11 +177,6 @@ package starling.core // event handlers - private function onResize(event:Event):void - { - // TODO - } - private function onContextCreated(event:Event):void { initializeGraphicsAPI(); @@ -223,8 +224,8 @@ package starling.core function convertPosition(globalPos:Point):Point { return new Point( - (globalPos.x - mViewPort.x) * (mViewPort.width / mStage.stageWidth), - (globalPos.y - mViewPort.y) * (mViewPort.height / mStage.stageHeight)); + (globalPos.x - mViewPort.x) + (mViewPort.width / mStage.stageWidth), + (globalPos.y - mViewPort.y) + (mViewPort.height / mStage.stageHeight)); } function getPhaseFromMouseEvent(event:MouseEvent):String @@ -304,8 +305,14 @@ package starling.core public function set antiAliasing(value:int):void { mAntiAliasing = value; - if (mContext) - mContext.configureBackBuffer(mViewPort.width, mViewPort.height, value, false); + updateViewPort(); + } + + public function get viewPort():Rectangle { return mViewPort.clone(); } + public function set viewPort(value:Rectangle):void + { + mViewPort = value.clone(); + updateViewPort(); } // static properties