0

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

我可以让类在 .swc 中工作,但不能在接口中工作!

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

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

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

2- 在 Flash 中,右键单击地图符号并选择“export SWC...”和“export SWF...”。

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

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

5-在flash中,actionscript设置->库路径,添加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();
        ...

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

4

1 回答 1

0

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

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

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

此外,如果您将库完全包含在 FlashDevelop 中,也许会有所帮助

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

祝你好运!

于 2011-02-04T08:11:59.313 回答