“FlashPlatform Initialization”的版本间的差异
来自Blueidea
(未显示同一用户的6个中间版本) | |||
第4行: | 第4行: | ||
==舞台尺寸的軟匹配:== | ==舞台尺寸的軟匹配:== | ||
+ | |||
+ | 此示例識別舞台大小的修改並始終以一個藍色背景填充。 | ||
<syntaxhighlight lang="actionscript"> | <syntaxhighlight lang="actionscript"> | ||
− | |||
− | |||
− | |||
− | |||
package { | package { | ||
import flash.display.Shape; | import flash.display.Shape; | ||
第18行: | 第16行: | ||
// ${1} | // ${1} | ||
/** | /** | ||
− | * The <code> | + | * The <code>Test</code> class.<br/> |
*/ | */ | ||
public class Test extends Sprite { | public class Test extends Sprite { | ||
第29行: | 第27行: | ||
stage.scaleMode = StageScaleMode.NO_SCALE; | stage.scaleMode = StageScaleMode.NO_SCALE; | ||
// 待會用來填充舞台。 | // 待會用來填充舞台。 | ||
− | $ | + | $border = new Shape(); |
+ | addChild($border); | ||
+ | // 初始時先繪製一次。 | ||
repaintBorder(stage.stageWidth, stage.stageHeight); | repaintBorder(stage.stageWidth, stage.stageHeight); | ||
+ | // 監聽舞台大小的改變。 | ||
stage.addEventListener(Event.RESIZE, stage_resizeHandler); | stage.addEventListener(Event.RESIZE, stage_resizeHandler); | ||
} | } | ||
第45行: | 第46行: | ||
} // <- end class -> | } // <- end class -> | ||
} | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 通常我們會對stage做如上設定讓舞台在左上角對齊,並且當FlashPlayer尺寸設置時令縮放保持不變。 | ||
+ | <syntaxhighlight lang="actionscript"> | ||
+ | stage.align = StageAlign.TOP_LEFT; | ||
+ | stage.scaleMode = StageScaleMode.NO_SCALE; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | 接下來對FlashPlayer設定一個初始大小。如果您使用的Flash IDE那麼直接在設置面板設置即可。 | ||
+ | 如果您使用的時Flash Builder那麼可以在${1}處加入使長寬為900 x 600並指定60fps刷新率。 | ||
+ | <syntaxhighlight lang="actionscript"> | ||
+ | // ${1} | ||
+ | [SWF(width="900", height="500", frameRate="60")] | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 最後在舞台尺寸改變時重新繪製邊框。 | ||
+ | <syntaxhighlight lang="actionscript"> | ||
+ | // ${2} | ||
+ | $border.graphics.clear(); | ||
+ | $border.graphics.beginFill(0x00CCFF); | ||
+ | $border.graphics.drawRect(0, 0, width, height); | ||
+ | $border.graphics.endFill(); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 如果您操作無誤完成如上設定後會看見以下畫面。 | ||
+ | <center>[[Image:FlashPlatform_InitStage.png]]</center> | ||
+ | |||
+ | |||
+ | ==stage軟獲取== | ||
+ | 假設這個類的swf被另外一個swf所加載。那麼一定會悲劇。 | ||
+ | <syntaxhighlight lang="actionscript"> | ||
+ | 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 -> | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | 使用stage引用的軟獲取。可以有效避免悲劇和蛀牙的發生。 | ||
+ | <syntaxhighlight lang="actionscript"> | ||
+ | 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 -> | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==限定顯示範圍== | ||
+ | 你並不需要給stage指定mask | ||
+ | 只需要 | ||
+ | <syntaxhighlight lang="actionscript"> | ||
+ | stage.scrollRect = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); | ||
</syntaxhighlight> | </syntaxhighlight> |
2011-04-14T02:37:49的最后版本
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);