如何获取加载的SWF的舞台宽度

时间:2013-04-16 08:52:19

标签: actionscript-3 stage

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

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

2 个答案:

答案 0 :(得分: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

确保传递加载的swf文件的loaderInfo而不是加载程序。

答案 1 :(得分:0)

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