0

XML からデータを取得して配列に入れるのが難しい。

ドキュメントの冒頭で、配列は次のようになります。

// MC's in library with exported for AS with class names "page1", "page2", etc.
var pageArray:Array = [new page1(), new page2(), new page3(), new page4(), new page5()];

配列をナビゲートすると、どれもうまく機能します。

次に、MovieClip 内から、その配列を XML ファイルの新しい配列に置き換えようとすると、問題が発生します。

/..xml details etc../
var pages_xml:String = xmlData.account.(@code == String(codeField.text)).pages;
MovieClip(root).pageArray = pages_xml;

私の XML の行の例は、次のようになります。

<account code="1"><accountName>Account1</accountName><pages>new page1(), new page2()</pages></account>

したがって、上記の例から、 new page1()、new page2()、new page3()new page1()、new page2()に置き換えようとしていることがわかりますが、そうすると 次のエラーが発生します。

TypeError: エラー #1034: 型強制に失敗しました: "new page1(), new page2()" を配列に変換できません。

最善の方法はおそらくスプライスか何かであることはわかっていますが、後で配列が乱雑になり、おそらく最大 50 ページ (アカウント コードごとに異なるページの選択) を超えることになります。

私ができることや間違っていることについてのアイデアをいただければ幸いです。

4

1 に答える 1

2

あなたが間違っているのは、文字列を取得して配列に割り当てることです...代わりに、文字列を解析してから新しいインスタンスを作成する必要があると言うように、文字列に基づいてクラスのインスタンスを作成したいようですのようなものを使用して

var parsedString:Array = pages_xml.split(",");
MovieClip(root).pageArray=[];
for(var i:int=0;i<parsedString.length;i++)
{
    var clazz:Class = getDefinitionByName(parsedString[i]) as Class;
    MovieClip(root).pageArray.push(new clazz());
}
于 2012-07-16T02:12:02.917 に答える