2

我正在将显示图像幻灯片的 SWF 加载到另一个阶段。当我使用stage.stageHeightstage.stageWidth在加载的 SWF 中时,我得到加载 SWF 的舞台的宽度和高度,而不是加载的 SWF 舞台。

我的问题是,如何从加载的 SWF 本身而不是主舞台中获取加载的 SWF 的宽度和高度?

4

2 回答 2

1

我看到的唯一方法是读取 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 文件而不是加载器。

于 2013-04-16T10:50:01.430 回答
0

加载的swf将给出原始舞台大小。但是,在 swf 加载完成之前,该数据不可用,因此您应该在访问它们之前等待实例调度,否则它将引发错误。LoaderInfo heightwidthLoaderInfoEvent.COMPLETE

于 2013-04-16T12:28:40.710 回答