2

我正在使用 MovieClipLoader 将外部 as2 swf 文件加载到我的 as2 flash 项目中,但我无法获取加载的 swf 的原始舞台大小。

当我运行以下代码时:

var popup:MovieClip = _root.createEmptyMovieClip("popup", 1);
var loader:MovieClipLoader = new MovieClipLoader();
var loadHandler:Object = new Object();
loader.addListener(loadHandler);
loader.loadClip(url, popup); 
loadHandler.onLoadInit = function(mc:MovieClip) {
    trace(mc._width + ", " + mc._height);
}

当我真正想要的是加载的 swf 文件的舞台大小时,我得到奇怪的宽度/高度值(mc._width=601.95,mc._height=261.15),在这种情况下我知道它是 300px x 250px。

任何建议表示赞赏!谢谢

4

3 回答 3

3

这里的问题是加载的 swf 在加载到另一个 swf 时会丢失它的舞台大小。父级的阶段成为加载 swf 的阶段。当请求加载的 swf 的大小时,就像您一样,它将返回第一帧的整个表面的宽度和高度,而不是舞台的宽度和高度。

我过去解决这个问题的方法是在加载的 swf 的第一帧上创建一个具有该 swf 舞台大小的影片剪辑实例。一旦加载了 swf,您就可以定位该 swf 并获取它的尺寸。当然,这仅在您对尝试加载的 swf 具有发布控制权时才有效。

用一个例子来说明这一点。在要加载的 swf 中,在第一帧上放置一个movieclip(例如矩形的movieclip)并将其命名为stage_mc。当您现在加载 swf 时,您可以像这样定位该 stage_mc 实例:

loadHandler.onLoadInit = function(mc:MovieClip) {
    trace(mc.stage_mc._width + ", " + mc.stage_mc._height);
}
于 2009-06-02T02:15:06.643 回答
0

在 AS3 中,您可以使用 loaderinfo 属性获取已加载 SWF 的高度:

// imports
    import flash.display.LoaderInfo;

// loading code
    var loader:Loader = new Loader();
    loader.load(new URLRequest('some_swf.swf'));
    loader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);

// listener
    function loaderInitHandler(event:Event):void 
    {
        var info:LoaderInfo = event.target as LoaderInfo;
        trace('Loaded swf is ' + info.width + ' x ' + info.height + ' px');
    }

// Loaded swf is 500 x 300 px
于 2010-03-31T17:19:42.447 回答
-1

尝试

stage.width; 
stage.height;
于 2009-06-02T02:25:16.107 回答