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 件のコメント:
コメントを投稿