0

ライブラリには、MovieClipsのクラスがたくさんあります。

ship_3000aa
ship_3000ab
ship_3001aa

等々。

私はこのようにそれらにアクセスする必要があります:

var image_key:String = "3000aa";
var ship:MovieClip = new _root["ship_"+image_key]();

これはすべてクラス内で発生し、すべてのMovieClipsはフレーム2にエクスポートされます。フレーム2では、これが発生するクラスがインスタンス化されます。

ルートはベースルートです。「」のない「ルート」が見つかりません。_rootのプロパティはnullです。プロパティは_stageにも存在しません。

クラス内から配列アクセス演算子を使用してライブラリMovieClipクラスをインスタンス化する正しい方法はありますか?

ありがとう。

4

1 に答える 1

3

クラスを配列に保持することで、オブジェクトをインスタンス化できます。

var classArray:Array = [ship_3000aa, ship_3000ab, ship_3001aa];
var ship:MovieClip = new classArray[2]();

または、次を使用してクラス名でオブジェクトをインスタンス化しますflash.utils.getDefinitionByName(おそらくあなたの場合はもっと便利です):

var imageKey:String = "3000aa";
var ShipClass:Class = getDefinitionByName("ship_" + imageKey) as Class;
var ship:MovieClip = new ShipClass();
于 2013-02-08T00:51:55.353 に答える