代码之家  ›  专栏  ›  技术社区  ›  Brandon

100%至100%柔性应用预加载器定位

  •  1
  • Brandon  · 技术社区  · 15 年前

    尝试将加载动画应用到我的flex应用程序时出现问题-整个浏览器窗口占用者。 我正在将DownloadProgressBar类的子类化,如Adobe的 article 关于这个。 stageHeight stageWidth ,由基类报告的不正确。它在构造器中显示500x375像素,在其他地方显示0x0像素。为什么?

    6 回复  |  直到 12 年前
        1
  •  1
  •   Pascal Gagneur    15 年前

    你解决这个问题了吗?我的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;
        }
    }
    
        2
  •  2
  •   Austin    15 年前

    我有代码来集中我的自定义进度加载器,并且在本文中工作得非常好。 http://askmeflash.com/article_m.php?p=article&id=7

        3
  •  0
  •   stormwild    15 年前

    我不确定这是否有帮助,但我认为可以使用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-referencing-stage-flex.html

    希望他们帮忙。

        4
  •  0
  •   Stiggler    15 年前

    宽度/高度测量值0x0通常表示相关组件在读取时未完全布置(包括子组件)。在构造函数中检查度量值肯定太早了。在将阶段设置为全屏后,您需要检查测量结果,显示的所有内容都已显示出来,可能是在Applications CreationComplete事件中,甚至是稍后。以下链接应该是一个很好的资源:

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

        5
  •  0
  •   cliff.meyers    15 年前

    您要做的是为舞台添加一个事件监听器来调整事件的大小,并相应地调整预加载程序的大小。否则,如果有人在显示预加载程序时调整了您的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;
    
        6
  •  0
  •   user339568    12 年前

    我在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;
            ...
        }