Я делаю игру, которая загружает карту .swfs во время выполнения. Карты будут содержать графику и код, которые могут варьироваться от карты к карте. Я решил сделать все карты реализацией интерфейса, поэтому все они могут использоваться одинаково в игре. Я использую .swc, чтобы содержать интерфейс, например, в this page.Создание .swc - почему не работают интерфейсы, когда классы выполняются?
Я могу получить классы для работы в .swc, но не интерфейсы!
Я использую Flash cs5 и flashdevelop для редактирования в AS3. Вот как я делал это:
1- создать map.fla с символом под названием Map и Map.as:
public class Map extends MovieClip {
public function test():void {
trace("woohoo");
}
}
2- в Flash, щелкните правой кнопкой мыши значок карты и выберите «export SWC ...», а также «export SWF ...».
3- создать новый .fla и FlashDevelop проект под названием Loader в новую папку, а затем скопировать в .swf и .swc создан в 2
4- в FlashDevelop, щелкните правой кнопкой мыши МЖК и выберите «добавить в библиотеку»
5- вспышке, настройки Actionscript -> lirbary пути, добавьте SWC и установить тип Link: Внешний
Сейчас в Loader.as я могу получить доступ к классу карты после загрузки в map.swf:
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: Error # 1014: Class IMap не найден». Почему, почему? Если кто-то может помочь, я буду благодарен.
УДИВИТЕЛЬНЫЙ - Я не знал об этом варианте для экспорта всей fla как swc. Большое спасибо за ваш ответ! – joeatsalot
приветствуется :) – Oliver