如何在AS2中获得加载的swf舞台的宽度/高度?

时间:2009-06-02 00:42:45

标签: flash actionscript-2 flash-cs4 swfloader

我正在使用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);
}

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

任何建议表示赞赏! 感谢

3 个答案:

答案 0 :(得分:3)

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

我过去解决这个问题的方法是在加载的swf的第一帧上创建一个movieclip实例,其大小与该swf的舞台大小相同。一旦加载了swf,你就可以定位swf并获得它的尺寸。当然,这只有在您对要加载的swf进行发布控制时才有效。

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

loadHandler.onLoadInit = function(mc:MovieClip) {
    trace(mc.stage_mc._width + ", " + mc.stage_mc._height);
}

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

答案 2 :(得分:-1)

尝试

stage.width; 
stage.height;