2013年3月22日 星期五

2013.03.22 近日發現

這個禮拜為了製作手持裝置的APP
在調整畫面上做了一些工夫
比較有印象的是~~~在原生flash上addchild物件

首先~為了在原生flash層上放物件
會利用
Starling.current.nativeOverlay.addChild(物件);


接著starling有一招可以檢查手持裝置的解析度
再把starling物件調整成對應的尺寸

public function Main():void {
_starling = new Starling(Game, stage, viewPortRectangle, null, "auto", "baseline");

stage.addEventListener(Event.RESIZE, resizeStage);      //在stage改變size時觸發
}



private function resizeStage(e:Event):void{
var viewPortRectangle:Rectangle = new Rectangle();
viewPortRectangle.width = stage.stageWidth;
viewPortRectangle.height = stage.stageHeight;
Starling.current.viewPort = viewPortRectangle;      //將viewport大小改成裝置的解析度
}

然而產生的問題是~~原生的物件座標不會隨著starling做變化
所以要先抓取變化的值~~再以此改變物件的座標與大小


private function rootCreatedHandler(e:starling.events.Event):void{
var gameInstance:Game;
gameInstance = Starling.current.stage.getChildAt(0) as Game;    //抓取game物件
gameInstance.newWidth = _starWidth;   //將值傳入game裡
gameInstance.newHeight = _starHeight;
}


利用上面的函式~~就可以將抓到的解析度數值傳入starling物件裡
再進而做調整~~~

沒有留言: