カテゴリー
Flash

ActionScript 2.0 同名のクラスは無視されるバグ?仕様?

こんなディレクトリー構成でc.swfにa.swf…

こんなディレクトリー構成でc.swfにa.swfとb.swfをloadmovieする場合
後に先に読み込んだswfに含まれているクラスが最後まで生き残ります。
逆の言い方をすると、後で読み込まれたswfに同じ名前のクラスがあっても上書きできません。

例えばに a.swfを先に

var t = _mc.createEmptyMovieClip("load",1);
t.loadMovie("a/a.swf");

と読み込んで、後で

removeMovieClip(t);
var t = _mc.createEmptyMovieClip("load",1);
t.loadMovie("b/b.swf");

てな感じで読み込んだ場合

a/as/Kani.asに書かれている内容

class Kani{
	public function Kani(){
		trace("AAA");
	}
}

のみがc.swf内で最後まで生き残ります。

b.swfに取り込まれているクラス b/as/Kani.as

class Kani{
	public function Kani(){
		trace("BBB");
	}
}

は無視されます。

パスは関係ないので、単純に名前が重複しないように設計を考えれば問題ありません。
なるべく一般的な短い名前はつけないようにしましょう。

(kani君ありがとう)