我有一个扩展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 :(得分:2)
我不确定这是否适用于SWF加载,但每当我加载内容时,我都无法在加载整个内容之前访问宽度和高度。
所以让一个事件监听器在加载完成时监听,然后读取高度/宽度。
另请参阅AS3中的loaderInfo类
答案 1 :(得分:1)
我不确定你试图获取高度和宽度的周期的哪一部分(以及加载器对象或加载的内容)但你可以使用以下方法访问加载对象的高度和宽度SWFLoader.loaderInfo.height和SWFLoader.loaderInfo.width。
答案 2 :(得分:0)
默认情况下,SWFLoader将内容缩放到加载器的大小,因此您必须设置加载器的大小。如果您希望加载器扩展到内容的大小,那么您必须将scaleContent属性设置为false。
答案 3 :(得分:0)
SWFLoader是一个UIComponent。
需要通过UIComponent框架运行才能正确设置其尺寸
换句话说,它正在等待对commitProperties(),updateDisplayList()等的调用。
如果你把它放在你的应用程序中(以便它是布局框架的一部分),它应该没问题。