2008-10-16 55 views
3

我有延伸的SWFLoader類,我用它像一個正常的SWFLoader:爲什麼加載的SWFLoader的寬度和高度爲零?

var loader:MySWFLoader = new MySWFLoader(); 
loader.load("myFile.SWF"); 
myScene.addChild(loader); 

裝載工程確定,但它仍然是0,因爲寬度&高度從未從0變化,我不得不重寫寬度/高度獲得屬性,使其工作:

class MySWFLoader extends SWFLoader 
{ 
public override function get width():Number{ return contentWidth; } 
public override function get height():Number{ return contentHeight; } 
} 

除了作爲一個大黑客這不是很正確;特別是因爲SWF具有多個框架並且框架具有不同的寬度/高度。

爲什麼寬度/高度在第一位工作?不應該在裝載過程中自動設置它們嗎?這可能是SWF本身存在的問題嗎?

更新:將scaleContent更改爲true或false沒有區別。

回答

0

默認情況下,SWFLoader會將內容縮放到加載程序的大小,因此您必須設置加載程序的大小。如果您希望加載器縮放到內容大小,則必須將scaleContent屬性設置爲false。

1

我不知道你試圖抓住高度和寬度(是加載器對象還是加載的內容)的週期的哪一部分,但你可以訪問加載的對象的高度和寬度使用SWFLoader.loaderInfo.height和SWFLoader.loaderInfo.width。

0

SWFLoader是一個UIComponent。

它需要通過的UIComponent框架下運行,以正確設置它的尺寸

換句話說,如果你刪除它,它正在等待調用的commitProperties()的updateDisplayList()等

在你的應用程序中(所以它是佈局框架的一部分)應該沒問題。

2

我不確定這是否適用於SWF加載,但每當我加載內容時,我無法在加載整個事件之前訪問寬度和高度。

因此,讓一個事件偵聽器在加載完成時偵聽,然後讀取高度/寬度。

另請參見AS3中的loaderInfo類

相關問題