我正在将显示图像幻灯片的 SWF 加载到另一个阶段。当我使用stage.stageHeight
或stage.stageWidth
在加载的 SWF 中时,我得到加载 SWF 的舞台的宽度和高度,而不是加载的 SWF 舞台。
我的问题是,如何从加载的 SWF 本身而不是主舞台中获取加载的 SWF 的宽度和高度?
我正在将显示图像幻灯片的 SWF 加载到另一个阶段。当我使用stage.stageHeight
或stage.stageWidth
在加载的 SWF 中时,我得到加载 SWF 的舞台的宽度和高度,而不是加载的 SWF 舞台。
我的问题是,如何从加载的 SWF 本身而不是主舞台中获取加载的 SWF 的宽度和高度?
我看到的唯一方法是读取 swf 元数据。您可以com.senocular.utils.SWFReader
为此使用:
package
{
import com.senocular.utils.SWFReader;
import flash.display.Sprite;
import flash.events.KeyboardEvent;
[SWF(width="800", height="200", backgroundColor="0x8B8B8B")]
public class astest extends Sprite
{
public function astest()
{
stage.addEventListener(KeyboardEvent.KEY_UP, onKb);
}
protected function onKb(event:KeyboardEvent):void
{
var swf:SWFReader = new SWFReader(root.loaderInfo.bytes);
trace("swf.width: "+swf.width);
trace("swf.height: "+swf.height);
}
}
}
输出:
swf.width: 800
swf.height: 200
一定要传递loaderInfo
加载的 swf 文件而不是加载器。
加载的swf将给出原始舞台大小。但是,在 swf 加载完成之前,该数据不可用,因此您应该在访问它们之前等待实例调度,否则它将引发错误。LoaderInfo
height
width
LoaderInfo
Event.COMPLETE