Apache flex 100%至100%Flex应用程序预加载程序定位

Apache flex 100%至100%Flex应用程序预加载程序定位,apache-flex,preloader,Apache Flex,Preloader,我在尝试将加载动画应用到我的Flex应用程序(整个浏览器窗口)时遇到问题。 我正在对DownloadProgressBar类进行子类化,如Adobe关于此的文章中所述stageHeight和stageWidth不正确。构造器中显示500x375像素,其他地方显示0x0。为什么?我不确定这是否有帮助,但我认为可以使用application.width、application.height来参考Flex应用程序的大小 以下问题似乎与您的问题有关: 希望他们能有所帮助。我不确定这是否有帮助,但

我在尝试将加载动画应用到我的Flex应用程序(整个浏览器窗口)时遇到问题。
我正在对DownloadProgressBar类进行子类化,如Adobe关于此的文章中所述<基类报告的code>stageHeight和
stageWidth
不正确。构造器中显示500x375像素,其他地方显示0x0。为什么?

我不确定这是否有帮助,但我认为可以使用application.width、application.height来参考Flex应用程序的大小

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


希望他们能有所帮助。

我不确定这是否有帮助,但我认为可以使用application.width、application.height来参考Flex应用程序的大小

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


希望他们能有所帮助。

0x0的宽度/高度测量值通常表示相关组件在阅读时没有完全布置好(包括子组件)。在建造商中检查测量肯定为时过早。在您将舞台设置为全屏并且您显示的所有内容都已布置好之后,您可能会希望检查测量值,可能是在applications creationComplete事件中,甚至可能是在以后。以下链接应该是一个很好的资源:


0x0的宽度/高度测量值通常表示相关部件在读取时未完全布置(包括子部件)。在建造商中检查测量肯定为时过早。在您将舞台设置为全屏并且您显示的所有内容都已布置好之后,您可能会希望检查测量值,可能是在applications creationComplete事件中,甚至可能是在以后。以下链接应该是一个很好的资源:


您要做的是在后台添加一个事件侦听器,用于调整其大小事件,并相应地调整预加载程序的大小。否则,如果有人在显示预加载程序时调整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;

您要做的是向stage添加一个事件侦听器,用于调整其resize事件,并相应地调整预加载程序的大小。否则,如果有人在显示预加载程序时调整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;

你解决这个问题了吗?我的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;
    }
}

你解决这个问题了吗?我的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;
    }
}

我在FlashBuilder中的一个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;
        ...
    }

我在FlashBuilder中的一个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;
        ...
    }