`

[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题

 
阅读更多

先看下面的一段脚本,这是比较经典的初始化脚本:

  1. package
  2. {
  3.         import flash.display.Sprite;
  4.         import flash.events.Event;

  5.         public class Test extends Sprite
  6.         {
  7.                 public function Test()
  8.                 {
  9.                         if(stage)
  10.                         {
  11.                                 init(null);
  12.                         }
  13.                         else
  14.                         {
  15.                                 addEventListener(Event.ADDED_TO_STAGE, init);
  16.                         }
  17.                 }

  18.                 private function init(event:Event):void
  19.                 {
  20.                         stage.align = StageAlign.TOP_LEFT;
  21.                         stage.scaleMode = StageScaleMode.NO_SCALE;
  22.                         //应用初始化时的脚本放在该方法下
  23.                         trace(stage.stageWidth, stage.stageHeight);
  24.                 }
  25.         }
  26. }
复制代码
该脚本在火狐下可以正常取得flash舞台的尺寸,可是在ie中却只会都返回0,不过我们在过几秒后再访问这个尺寸是就会正常,这说明在ie中,窗口第一次改变大小时是在我们的init方法之后的,该怎么解决呢,我们可以侦听Event.RESIZE事件,在舞台尺寸都不为0后再调用init方法即可,实现有点繁琐,所以小可这就奉上自己写的脚本了:
  1. package
  2. {
  3.         import flash.display.Sprite;
  4.         import flash.display.StageAlign;
  5.         import flash.display.StageScaleMode;
  6.         import flash.events.Event;
  7.         
  8.         public class StageTest extends Sprite
  9.         {
  10.                 public function StageTest()
  11.                 {
  12.                         if(stage)
  13.                         {
  14.                                 resizeListaner(null);
  15.                         }
  16.                         else
  17.                         {
  18.                                 addEventListener(Event.ADDED_TO_STAGE, resizeListaner);
  19.                         }
  20.                 }
  21.                 
  22.                 private function resizeListaner(event:Event):void
  23.                 {
  24.                         if(event != null)
  25.                         {
  26.                                 removeEventListener(Event.ADDED_TO_STAGE, resizeListaner);
  27.                         }
  28.                         //限制 flash 的尺寸不进行拉伸, 否则不会触发 resize 事件
  29.                         stage.align = StageAlign.TOP_LEFT;
  30.                         stage.scaleMode = StageScaleMode.NO_SCALE;
  31.                         if(stage.stageWidth == 0 || stage.stageHeight == 0)
  32.                         {
  33.                                 stage.addEventListener(Event.RESIZE, resizeHandler);
  34.                         }
  35.                         else
  36.                         {
  37.                                 init();
  38.                         }
  39.                 }
  40.                 
  41.                 private function resizeHandler(event:Event):void
  42.                 {
  43.                         if(stage.stageWidth > 0 && stage.stageHeight > 0)
  44.                         {
  45.                                 stage.removeEventListener(Event.RESIZE, resizeHandler);
  46.                                 init();
  47.                         }
  48.                 }
  49.                 
  50.                 private function init():void
  51.                 {
  52.                         //应用初始化时的脚本放在该方法下
  53.                         trace(stage.stageWidth, stage.stageHeight);
  54.                 }
  55.         }
  56. }
复制代码
分享到:
评论

相关推荐

    [心得] 纯As类 Alert

    这篇心得将探讨如何创建一个自定义的纯 AS3 Alert 类,以便更方便地在项目中使用。 首先,我们需要创建一个名为 `Alert` 的类,这个类将包含所有与弹出对话框相关的功能。这个类可以有如下的结构: ```as3 package...

    air内嵌网页 as3

    在移动应用开发领域,Adobe AIR(Adobe Integrated Runtime)是一个强大的跨平台框架,它允许开发者使用ActionScript 3(AS3)或Flex来构建桌面和移动应用程序。这些应用程序可以利用AIR运行时环境,实现与本地系统...

    flashAS2和AS3的自适应分辨率改变元件

    在Flash开发中,AS2(ActionScript 2.0)和AS3(ActionScript 3.0)是两种主要的编程语言,用于创建交互式内容,包括动画和游戏。本主题将深入探讨如何使用这两种语言来实现SWF(Shockwave Flash)文件的自适应...

    as3 flash 天气预报

    6. 响应式设计:确保应用在不同屏幕尺寸和设备上都能良好显示,可以利用AS3的Stage对象和StageWidth/StageHeight属性来调整元素的位置和大小。 7. 性能优化:避免不必要的重绘,使用位图缓存(cacheAsBitmap)提升...

    flash代码实现图片水波纹效果(as3)

    在本文中,我们将深入探讨如何使用ActionScript 3.0(AS3)在Flash CS3环境中实现图片的水波纹效果。水波纹效果是一种动态视觉特效,它可以使静态的图片看起来像是水面波动,增加了图像的生动性和动态感。这个效果在...

    flash as3 仿苹果菜单

    可以使用AS3的StageWidth和StageHeight属性来检测舞台大小的变化,并根据需要调整菜单的布局。 7. **优化性能**:由于Flash在处理大量矢量图形时可能会遇到性能问题,因此应优化代码,避免不必要的计算和重复渲染。...

    as3人物行走动作组和

    在AS3(ActionScript 3)中,控制人物行走动作是一项关键的任务,它涉及到游戏开发、动画制作等多个领域。ActionScript 3是Adobe Flash Professional、Flash Builder等工具中用于创建交互式内容的主要编程语言,特别...

    as3做的一串跟随鼠标飘动的小球

    在本文中,我们将深入探讨如何使用ActionScript 3(AS3)编程语言创建一个互动效果,使得小球跟随鼠标在舞台上飘动。ActionScript 3是Adobe Flash Professional和FlashDevelop等工具中的主要脚本语言,它为动画和...

    水波特效 (AS3)

    在本文中,我们将深入探讨如何在ActionScript 3(AS3)中实现“水波特效”。这个特效通常用于增强游戏、交互式应用或网站的视觉体验,给人一种动态、真实的水面波动效果。我们将主要关注三个关键文件:`main.as`、`...

    flash as3 拖动效果

    在Flash AS3中,拖动效果是交互设计中常见的功能,它允许用户通过鼠标或触屏设备移动舞台上的对象,从而提升用户体验。本教程将详细解释如何在Flash ActionScript 3.0环境中实现这一效果。 首先,我们需要创建一个...

    as3 图片展示

    在AS3(ActionScript 3)中创建图片展示或照片墙是一种常见的应用场景,例如在网页、应用程序或游戏中的多媒体交互。ActionScript是Adobe Flash Player和Adobe AIR平台支持的编程语言,用于开发富互联网应用(RIA)...

    flash as3 截图,拍照

    在Flash AS3中,截取舞台画面,也称为屏幕快照或截图,是开发者经常需要进行的操作,尤其在游戏开发、交互式应用或者演示中。本文将深入探讨如何使用ActionScript 3.0来实现这一功能,并提供相关知识点。 1. **...

    flash 发布html 铺满浏览器全屏,分辨自适应用as3布局元件

    在Flash的生命周期中,通常会在EnterFrame事件或初始化阶段获取这些值,以确保在用户改变浏览器窗口大小时,内容依然能够铺满屏幕。 ```actionscript import flash.display.Stage; import flash.events.Event; ...

    as3鼠标控制人物移动

    在本文中,我们将深入探讨如何在AS3(ActionScript 3)中实现鼠标控制人物移动的功能,虽然题目提及的是AS2,但AS3是更现代、更高效的版本,因此我们以此为焦点。AS3是Adobe Flash Professional和Flash Player中使用...

    as3纯代码下雨效果

    在本场景中,"as3纯代码下雨效果"指的是利用AS3编写程序来模拟逼真的雨滴下落动画。这种效果通常通过在舞台上动态生成和管理大量图形对象来实现,为观众提供一种沉浸式的视觉体验。 1. **基本概念**: - AS3:...

    flashas3坦克游戏源码

    根据提供的文件信息,我们可以深入分析该Flash AS3坦克游戏源码中的关键技术点,特别是与`Direction`类和`Dot`类相关的使用方法。 ### 一、`Direction`类的使用 `Direction`类在此示例中扮演了重要的角色,主要...

    as3代码 鼠标拖动

    在ActionScript 3 (AS3)中,实现鼠标拖动图片移动的功能是一项基本但重要的技能,尤其对于初学者来说。这个功能广泛应用于各种交互式应用、游戏和网页设计中。以下将详细介绍如何通过AS3来实现这一效果。 首先,...

    简单的as3.0代码实现文字旋转

    在AS3中,TextField类提供了丰富的文本处理功能,包括格式化文本、插入图片等。创建TextField实例并设置其文本内容: ```actionscript var textfield:TextField = new TextField(); textfield.text = "要旋转的文字...

    as3.0随机运动

    在ActionScript 3.0(AS3.0)中,物体的随机运动是游戏开发中的常见需求,可以增加游戏的趣味性和不确定性。本教程将详细解释如何实现这一功能。 首先,我们要了解AS3.0的基础知识。AS3.0是Adobe Flash Platform的...

    张志晨之flash AS3实用代码:调整mc层深

    在Adobe Flash Professional中使用ActionScript 3.0(AS3)进行动画制作时,经常需要对多个MovieClip(简称MC)对象进行层次调整以实现自然流畅的视觉效果。例如,在模拟三维空间中的运动时,物体靠近或远离观察者时...

Global site tag (gtag.js) - Google Analytics