创建一个.swc - 为什么接口不工作,什么时候做?

时间:2010-09-26 21:06:23

标签: flash interface flashdevelop swc

我正在制作一款在运行时加载地图.swfs的游戏。地图将包含图形和代码,这些图形和代码可能因地图而异。我决定让所有地图都实现一个界面,所以它们都可以通过游戏以相同的方式使用。我正在使用.swc来包含界面,例如this page

我可以在.swc中使用类,但不能使用接口!

我在AS3中使用Flash cs5和flashdevelop进行编辑。这就是我一直在做的事情:

1-使用名为Map的符号创建map.fla,并使用Map.as:

public class Map extends MovieClip {
    public function test():void {
        trace("woohoo");
    }
}

2-在Flash中,右键单击地图符号,然后选择“导出SWC ...”并“导出SWF ...”。

3-在新文件夹中创建一个名为Loader的新.fla和flashdevelop项目,并复制在2中创建的.swf和.swc

4-在flashdevelop中,右键单击swc并选择“添加到库”

5- in flash,actionscript settings - > lirbary路径,添加swc并设置链接类型:外部

现在在Loader.as中我可以在map.swf中加载后访问Map类:

public class Loaderoo extends MovieClip {

    public function Loaderoo() {
        var loader:Loader = new Loader()
        loader.load(new URLRequest("map.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
        // var map:Map = new Map(); // this would throw a VerifyError 1014
    }

    private function loaded(e:Event):void {
        var map:Map = new Map();
        addChild(map);
        map.test(); // now it has loaded the class - traces "woohoo"
    }
}

到目前为止一切顺利。但是,如果我尝试

public class Map extends MovieClip implements IMap {
    ...

private function loaded(e:Event) {
        var map:IMap = new Map();
        ...

它不起作用!我得到“VerifyError:错误#1014:无法找到类IMap。” 为什么哦为什么?如果有人可以提供帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要将接口IMap存储在swc中。 尝试将整个fla导出为swc,而不仅仅是地图符号。

在Flash中:Flash>发布设置> Flash>检查导出SWC框。

现在发布swf并在FlashDevelop中使用生成的swc。

此外,如果您将库完全包含在FlashDevelop

中,也许会有所帮助

为此,请参阅此处的第2期: http://flashontherocks.com/2010/12/13/flashdevelop-resolved-issues/

祝你好运!