先看下面的一段脚本,这是比较经典的初始化脚本:
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- public class Test extends Sprite
- {
- public function Test()
- {
- if(stage)
- {
- init(null);
- }
- else
- {
- addEventListener(Event.ADDED_TO_STAGE, init);
- }
- }
- private function init(event:Event):void
- {
- stage.align = StageAlign.TOP_LEFT;
- stage.scaleMode = StageScaleMode.NO_SCALE;
- //应用初始化时的脚本放在该方法下
- trace(stage.stageWidth, stage.stageHeight);
- }
- }
- }
- package
- {
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageScaleMode;
- import flash.events.Event;
-
- public class StageTest extends Sprite
- {
- public function StageTest()
- {
- if(stage)
- {
- resizeListaner(null);
- }
- else
- {
- addEventListener(Event.ADDED_TO_STAGE, resizeListaner);
- }
- }
-
- private function resizeListaner(event:Event):void
- {
- if(event != null)
- {
- removeEventListener(Event.ADDED_TO_STAGE, resizeListaner);
- }
- //限制 flash 的尺寸不进行拉伸, 否则不会触发 resize 事件
- stage.align = StageAlign.TOP_LEFT;
- stage.scaleMode = StageScaleMode.NO_SCALE;
- if(stage.stageWidth == 0 || stage.stageHeight == 0)
- {
- stage.addEventListener(Event.RESIZE, resizeHandler);
- }
- else
- {
- init();
- }
- }
-
- private function resizeHandler(event:Event):void
- {
- if(stage.stageWidth > 0 && stage.stageHeight > 0)
- {
- stage.removeEventListener(Event.RESIZE, resizeHandler);
- init();
- }
- }
-
- private function init():void
- {
- //应用初始化时的脚本放在该方法下
- trace(stage.stageWidth, stage.stageHeight);
- }
- }
- }

本文介绍了一种在AS3中确保正确获取Flash舞台尺寸的方法,特别是在IE浏览器中遇到的问题及解决方案。通过监听窗口的Resize事件并延迟初始化过程,确保舞台尺寸能够准确获取。
413

被折叠的 条评论
为什么被折叠?



