FlashPlatform Initialization
来自Blueidea
Flash platform 應用初始化常用設置。
舞台尺寸的軟匹配:
此示例識別舞台大小的修改並始終以一個藍色背景填充。
package { import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; // ${1} /** * The <code>Test</code> class.<br/> */ public class Test extends Sprite { //========================================================================== // Constructor //========================================================================== /** Constructor */ public function Test() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; // 待會用來填充舞台。 $border = new Shape(); addChild($border); // 初始時先繪製一次。 repaintBorder(stage.stageWidth, stage.stageHeight); // 監聽舞台大小的改變。 stage.addEventListener(Event.RESIZE, stage_resizeHandler); } private var $border:Shape; private function repaintBorder(width:uint, height:uint):void { // ${2} } //========================================================================== // Event listeners //========================================================================== private function stage_resizeHandler(event:Event):void { repaintBorder(stage.stageWidth, stage.height); } } // <- end class -> }
通常我們會對stage做如上設定讓舞台在左上角對齊,並且當FlashPlayer尺寸設置時令縮放保持不變。
stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE;
接下來對FlashPlayer設定一個初始大小。如果您使用的Flash IDE那麼直接在設置面板設置即可。
如果您使用的時Flash Builder那麼可以在${1}處加入使長寬為900 x 600並指定60fps刷新率。
// ${1} [SWF(width="900", height="500", frameRate="60")]
最後在舞台尺寸改變時重新繪製邊框。
// ${2} $border.graphics.clear(); $border.graphics.beginFill(0x00CCFF); $border.graphics.drawRect(0, 0, width, height); $border.graphics.endFill();
如果您操作無誤完成如上設定後會看見以下畫面。
stage軟獲取
假設這個類的swf被另外一個swf所加載。那麼一定會悲劇。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; /** * The <code>Test</code> class.<br/> */ public class Test extends Sprite { //========================================================================== // Constructor //========================================================================== /** Constructor */ public function Test() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; } } // <- end class -> }
使用stage引用的軟獲取。可以有效避免悲劇和蛀牙的發生。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; /** * The <code>Test</code> class.<br/> */ public class Test extends Sprite { //========================================================================== // Constructor //========================================================================== /** Constructor */ public function Test() { addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); } //========================================================================== // Event listeners //========================================================================== private function addedToStageHandler(event:Event):void { removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; } } // <- end class -> }
限定顯示範圍
你並不需要給stage指定mask 只需要
stage.scrollRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);