我正在加载一个SWF,它将图像幻灯片显示到另一个阶段。当我在加载的SWF中使用stage.stageHeight
或stage.stageWidth
时,我得到加载SWF而不是加载的SWF阶段的舞台的宽度和高度。
我的问题是,如何从加载的SWF本身而不是主舞台中获取加载的SWF的宽度和高度?
答案 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
height
和width
将提供原始舞台大小。在swf完成加载之前,该数据不可用,因此您应该等待LoaderInfo
实例在访问它们之前调度Event.COMPLETE
,否则将引发错误。