首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3,作为自定义类型加载到SWF中

AS3,作为自定义类型加载到SWF中
EN

Stack Overflow用户
提问于 2009-10-12 14:33:08
回答 3查看 1.4K关注 0票数 4

这里有一个基本的问题。通常,在AS3中,您通过Loader加载到SWF中,您得到的是某种类型为"Loader“的伪MovieClip。

假设SWF是使用自定义类型的基类发布的,那么有没有什么神圣的方法可以将这个加载的SWF转换为扩展MovieClip而不是Loader的自定义类型呢?而不会丢失数据?

或者,假设您不能,您甚至可以从扩展Loader本身的自定义类型转换它吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-12 22:52:43

你可以这样做:

存根swf中的代码:

代码语言:javascript
复制
package {

    import flash.display.MovieClip;

    public class Stub extends MovieClip implements IStub {

        public function Stub() {
            trace("Stub::ctor");
        }

        public  function traceIt(value:String):void {
            trace("Stub::traceIt " + value);
        }
    }
}

我正在使用一个接口,但它并不是必须的。

代码语言:javascript
复制
package {

    public interface IStub {

        function traceIt(value:String):void;

    }
}

在“主”swf中的代码。

代码语言:javascript
复制
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT,handleInit);
loader.load(new URLRequest("Stub.swf"));

function handleInit(e:Event):void {
    var stub:Stub = loader.content as Stub;
//  or, using an interface 
//  var stub:IStub = loader.content as IStub;
    stub.traceIt("testing");
}
票数 5
EN

Stack Overflow用户

发布于 2009-10-12 14:45:20

根据this article in the LiveDocs上的评论,您可以将Loader.content转换为MovieClip并以这种方式访问它。

但是,也有一些限制。例如,SWF本身必须是一个AS3 SWF文件,执行加载的SWF和要加载的SWF应该共享同一沙箱。

票数 3
EN

Stack Overflow用户

发布于 2009-10-12 14:57:47

是的,loader.content可以让你访问任何加载的东西。您应该能够简单地将其转换为您想要的任何内容。

或者,您也可以选择扩展Loader,它已经扩展了DisplayObjectContainer,因此您将从一开始就拥有MovieClip的大部分功能。在这种情况下,编写它,这样你就可以简单地调用MyCustomClass.load(这里是swf),它应该可以做你需要做的事情。

我希望这对你有帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1554924

复制
相关文章

相似问题

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