上一篇:Starling Framework簡介
下一篇:Starling的Display Objects介紹(二)
Starling framework啟動方式
所有使用Starling framework的應用程式的起始點,都是由一個Starling物件,來創建整個Starling世界(Starling物件說明可見此:Starling),下面是一個最簡單的範例:
package{ import starling.core.Starling; import starling.display.Sprite; [SWF(width="1280", height="752", frameRate="60", backgroundColor="#000000")] public class Startup extends Sprite { private var mStarling:Starling; public function Startup() { // 建立Starling物件 mStarling = new Starling(Game, stage); // start it! mStarling.start(); } } }
Starling世界的物件樹
從官方的說明文件裡可以看到在Starling裡,畫面物件的繼承樹是長這樣的:
從上圖可看出在Starling裡面,DisplayObject是一切畫面物件的祖先,繼承於EventDispatcher。
DisplayObject物件介紹
官方手冊請見此:http://doc.starling-framework.org/core/starling/display/DisplayObject.html
這是所有物件樹的根物件,他的子孫包含像Quad、Image、MovieClip,這一邊是在做動畫影片的。另一邊像是DisplayObjectContainer則是放物件的容器,顧名思義,它可以再加入其他的DisplayObject在裡面。反向來說,在Starling世界裡面的MovieClip,是沒有辦法使用addChild的,它只能像是一個動畫影片一樣的單純被播放、控制位置、旋轉、或偵測碰撞,而無法在MovieClip裡面加入其他的MovieClip。
在Starling的DisplayObject其實只是一個abstract class,他沒有辦法被直接new出來,一定要被繼承並實作這兩個方法:
//要實作要如何利用Stage3D來產生畫面的方式 function render(support:RenderSupport, parentAlpha:Number):void; //實作物件碰撞偵測的方式 function getBounds(targetSpace:DisplayObject, resultRect:Rectangle=null):Rectangle
從上面的繼承樹我們可以發現MovieClip與DisplayObjectContainer是採用不一樣的碰撞偵測方法以及圖形render方式的。
在Starling裡的DisplayObject則有偵測多點觸控,以及設定物件坐標、及與不同層DisplayObjectContent的坐標轉換功能。
Stage物件介紹
官方手冊請見此:http://doc.starling-framework.org/core/starling/display/Stage.html
Starling物件有它主場景物件Stage,也就是上圖的Starling.display.Stage,它和flash裡的Stage一樣,是放所有物件的母容器(The Starling stage object, which is the root of the display tree that is rendered)。
這個物件裡面只能夠有繼承於starling.display.DisplayObject
的物件,而無法包含任何flash.display.DisplayObject
相關的物件,這兩種類別是完全不能兼容的。雖然在Starling裡面,可以用
Starling.current.nativeOverlay.addChild(textInput);
來加入原生flash物件,但就如我前一篇簡介所說,其實他也只是會取得flash.display.Stage的物件把元件放到裡面而已,它永遠都會被放在畫面的最上層。
Stage會在創建Starling物件時被自動創建,所以不用自己去建立它。