ScreenMultiResolution.as
var showType:int = 0; if(showType == 0) { showAll(); } else if(showType == 1) { showCenter(); } else { return; }変数showTypeの0で画面全体を表示し、1で画面の中央に表示に切り替えます。
ScreenMultiResolution.as
private function showCenter():void { viewport = RectangleUtil.fit( new Rectangle(0, 0, stage.stageWidth,stage.stageHeight), new Rectangle((stage.stageWidth >> 1) - (STAGE_WIDTH >> 1), (stage.stageHeight >> 1) - (STAGE_HEIGHT >> 1), STAGE_WIDTH, STAGE_HEIGHT), starling.utils.ScaleMode.SHOW_ALL); } private function showAll():void { viewport = RectangleUtil.fit( new Rectangle(0,0,stage.stageWidth,stage.stageHeight), new Rectangle(0,0,stage.fullScreenWidth,stage.fullScreenHeight), starling.utils.ScaleMode.SHOW_ALL); }RectangleUtil.fit()メソッドは、第1引数の矩形領域を第2引数の矩形領域に、縦横比は変えずに納めるためのRectangleオブジェクトを返します。
第3引数には、ScaleModeクラスの定数で伸縮モードが渡せます。
詳しくは
Starlingフレームワーク1.3の新しい機能(リンク先へ)
Multi-Resolution Development(リンク先へ)
をご覧下さい。
assetsの管理
Main.as
private function addAssets(data:Object):void { var sheetPngName:String = "sheetPng"; var sheetXmlName:String = "sheetXml"; var scaleFactorName:String = "scaleFactor"; var contentScaleFactor:int; var sScale:String; if(Starling.contentScaleFactor >= 1 && Starling.contentScaleFactor < 3) { contentScaleFactor = int(Starling.contentScaleFactor); sScale = "x"+contentScaleFactor.toString(); assetManager = new AssetManager(contentScaleFactor); assetManager.verbose = true; assetManager.enqueue(data[sScale][sheetPngName]); assetManager.enqueue(data[sScale][sheetXmlName]); assetManager.loadQueue(loadAssetsHandler); } } private function loadAssetsHandler(ratio:Number):void { if(ratio < 1.0) return; addTextures(); }
addAssetsメソッドでは、Starling.contentScaleFactorからテクスチャのスケール係数を取得します。 スケール係数に適したSpriteSheetを用意し、jsonファイルで管理するという仕組みになります。
SpriteSheetファイルが決定した所で、次にAssetManagerクラスを利用し指定した読み込み処理を行なっています。 読み込みが完了(1.0)になるまで、loadAssetsHandlerを繰り返しコールされます。
0 件のコメント:
コメントを投稿