我正在制作一款在运行时加载地图.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。” 为什么哦为什么?如果有人可以提供帮助,我将不胜感激。
答案 0 :(得分:0)
您需要将接口IMap存储在swc中。 尝试将整个fla导出为swc,而不仅仅是地图符号。
在Flash中:Flash>发布设置> Flash>检查导出SWC框。
现在发布swf并在FlashDevelop中使用生成的swc。
此外,如果您将库完全包含在FlashDevelop
中,也许会有所帮助为此,请参阅此处的第2期: http://flashontherocks.com/2010/12/13/flashdevelop-resolved-issues/
祝你好运!