2009-04-17 25 views
1

我試圖將加載動畫應用於我的Flex應用程序 - 整個瀏覽器窗口占用者時出現問題。 我按照Adobe的article中所述的方式繼承了DownloadProgressBar類。由基類報告的stageHeightstageWidth不正確。它表示構造函數中的500x375像素和其他地方的0x0。爲什麼?100%至100%Flex應用程序預加載器定位

回答

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; 
    } 
} 
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-referencing-stage-flex.html

希望他們幫助。

0

寬度/高度測量值0x0通常表示在閱讀時未涉及完整的組件(包括子組件)。在構造函數中檢查度量值肯定太早。在將舞臺設置爲全屏並且顯示的所有內容已經佈置完畢後,您可能需要檢查測量結果,可能是在應用程序creationComplete事件中,或許甚至更晚。下面的鏈接應該是一個很好的資源:

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

0

你想要做什麼是事件偵聽器添加到舞臺的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; 
2

我有代碼中心我自定義進度裝載機,並從本文 http://askmeflash.com/article_m.php?p=article&id=7

工作非常細
+0

你的鏈接幫助我解決問題。我創建了一個預加載器,並將其設置爲組件中間的零點。然後我在preloader類中使用「this.x = stage.stageWidth/2」,並且組件始終居中居中:) – ufk 2012-05-06 13:05:17

0

我在flash builder的actionscript項目中使用了100%到100%寬度和高度的同樣的問題。我發現stage.stageWidth和stage.stageHeight是500x375,直到preloader載入主類後,纔會變爲全屏大小。因此,預加載器中項目的定位不正確。我發現,這是此行中我的主類,漸漸的舞臺大小更新:

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