実行時にmap.swfsをロードするゲームを作成しています。マップにはグラフィックとコードが含まれ、どちらもマップごとに異なります。すべてのマップにインターフェイスを実装させることにしました。これにより、ゲームですべて同じように使用できるようになります。このページのように、インターフェイスを含めるために.swcを使用しています。
クラスを.swcで動作させることはできますが、インターフェイスを動作させることはできません。
AS3で編集にFlashcs5とflashdevelopを使用しています。これが私がそれをやってきた方法です:
1-MapというシンボルとMap.asを使用してmap.flaを作成します。
public class Map extends MovieClip {
public function test():void {
trace("woohoo");
}
}
2- Flashで、マップシンボルを右クリックし、[SWCのエクスポート...]と[SWFのエクスポート...]を選択します。
3-ローダーと呼ばれる新しい.flaおよびflashdevelopプロジェクトを新しいフォルダーに作成し、2で作成した.swfおよび.swcにコピーします。
4- flashdevelopで、swcを右クリックし、「ライブラリに追加」を選択します
5-フラッシュで、actionscript設定->ライブラリパス、swcを追加し、リンクタイプを設定します:外部
map.swfにロードした後、Loader.asで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が見つかりませんでした」というメッセージが表示されます。なんでなんで?誰かが助けてくれるなら、私は感謝するでしょう。