1

我在尝试将加载动画应用到我的 Flex 应用程序时遇到问题 - 整个浏览器窗口的占用者。我正在继承 Adob ​​e关于此的文章中描述的 DownloadProgressBar 类。stageHeightstageWidth,基类报告的不正确。它在构造函数中显示 500x375 像素,在其他地方显示 0x0。为什么?

4

5 回答 5

1

你解决了这个问题吗?我的 flex 应用程序也有同样的问题。舞台返回 500x375。我的解决方法并不漂亮。此函数在 FlexEvent.INIT_PROGRESS 上调用。所以当我的应用程序可用时,我会使用它的道具。

private function onFlexInitProgress( event:FlexEvent ):void {
    if (Application.application != null){
        var appWidth:Number = Application.application.width;
        var appHeight:Number = Application.application.height;
        x = (appWidth * 0.5) - (preloaderSWF.width * 0.5);
        y = (appHeight * 0.5);
        preloaderSWF.visible = true;
    }
}
于 2009-10-27T13:09:58.493 回答
0

我不确定这是否会有所帮助,但我认为可以通过使用 Application.width、Application.height 来引用 Flex 应用程序的大小。

http://livedocs.adobe.com/flex/3/html/help.html?content=app_container_2.html

以下问题似乎与您的问题有关:

http://www.nabble.com/Stupid-Question---Flex-width-and-height-td21423345.html

http://www.nabble.com/Flex-stage-size-td20167125.html

http://dreamweaverforum.info/flex/125327-reference-stage-flex.html

希望他们有所帮助。

于 2009-04-17T16:35:36.060 回答
0

0x0 的宽度/高度测量值通常表示所讨论的组件在读取时尚未完全布局(包括子组件)。在构造函数中检查测量值肯定为时过早。在您将舞台设置为全屏并且您正在显示的所有内容都已布置好之后,您可能想要检查测量结果,可能在应用程序创建完成事件中,甚至可能更晚。以下链接应该是一个很好的资源:

http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/

于 2009-04-17T23:55:10.730 回答
0

您要做的是将事件侦听器添加到舞台以获取其调整大小事件,并相应地调整预加载器的大小。否则,如果有人在显示预加载器时调整您的 Flex 应用程序的大小,它将不会调整大小。

stage.addEventListener(Event.RESIZE, onStageResize);

public function onStageResize(e : Event) : void {
    this.width = stage.stageWidth;
    this.height = stage.stageHeight;
}

或者,您可以使用如下代码将您的预加载器集中在舞台上:

preloader.x = this.stage.stageWidth/2 - preloader.width/2;
于 2009-04-18T00:45:16.227 回答
0

我在 flash builder 的 actionscript 项目中遇到了同样的问题,使用 100% 到 100% 的宽度和高度。我观察到 stage.stageWidth 和 stage.stageHeight 是 500x375,直到预加载器加载主类之后,它才会变为全屏大小。因此,预加载器中的项目定位不正确。我发现正是我的主课中的这一行正在更新舞台大小:

stage.scaleMode = StageScaleMode.NO_SCALE;

这是我在预加载器中实现它的方式:

public function Preloader()
    {
        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    }

    private function onAddedToStage(event:Event):void {
        removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        stage.scaleMode=StageScaleMode.NO_SCALE;
        stage.align=StageAlign.TOP_LEFT;
        ...
    }
于 2012-09-27T20:02:59.493 回答