首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AS2中获取已加载的swf舞台的宽/高?

如何在AS2中获取已加载的swf舞台的宽/高?
EN

Stack Overflow用户
提问于 2009-06-02 00:42:45
回答 3查看 10.9K关注 0票数 2

我正在使用MovieClipLoader将一个外部as2 swf文件加载到我的as2 flash项目中,但我在获取加载的swf的原始舞台大小时遇到了问题。

当我运行以下代码时:

代码语言:javascript
复制
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。

非常感谢您的任何建议!谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-02 02:15:07

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

我过去解决这个问题的方法是在加载的swf的第一帧上创建一个movieclip实例,该实例的大小与该swf的舞台大小相同。一旦加载了swf,您就可以将该swf作为目标并获取其尺寸。当然,只有当你对你想要加载的swf有发布控制时,这才能起作用。

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

代码语言:javascript
复制
loadHandler.onLoadInit = function(mc:MovieClip) {
    trace(mc.stage_mc._width + ", " + mc.stage_mc._height);
}
票数 3
EN

Stack Overflow用户

发布于 2010-04-01 01:19:42

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

代码语言:javascript
复制
// 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
票数 0
EN

Stack Overflow用户

发布于 2009-06-02 02:25:16

试一试

代码语言:javascript
复制
stage.width; 
stage.height;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档