0

私はアクションスクリプトにかなり慣れていません。私はこのシーンを持っています。コンボボックス「elementPicker」があり、XMLファイルから画像をロードするプロジェクトがあり、XMLファイルは次のように設定されています

<elements>
<head>
   <imgpath>/img/x.png</imgpath>
</head>
<head>...</head>
<head>...</head>

<eyes>...</eyes>
<eyes>...</eyes>
<eyes>...</eyes>
</elements>

などなど、コンボ ボックスには「頭」、「目」などのオプションがあります。私が欲しいのは、コンボボックスのデータに基づいて、画像パスを保持する配列に読み込まれるxml要素を変更することです

私は何かを試しました

var comboSelection:String = elementPicker.selectedItem.label;

次に、パスを配列に入れるためにループしているとき:

elementPathList.push(theXMLData.comboSelection.imgpath[ b ]);

TypeError: Error #1009: Cannot access a property or method of a null object reference.

これを行う方法について何か考えはありますか?

4

1 に答える 1

1

問題を完全に理解しているかどうかはわかりませんが、型エラーは、comboSelection (文字通り、値ではなくその単語) が theXMLData オブジェクトのプロパティとして存在しないことを示しています。これは、投稿した内容に基づいて true です。

omboSelection は、作成したローカル変数またはその値として「認識」されていませんが、型エラーではない XMLData オブジェクトのプロパティとして認識されています。

あなたがしたいことは、対応するプロパティを持つリスト内のアイテムを見つけることです.E4Xを使用してこれを実現できます.Googleで検索すると、e4xの使用に関する詳細が表示されます.XMLData.(@nodeName=comboSelection) .head.imgpath.

ただし、ラベル プロパティとオブジェクトに直接関連付けられた実際のソース パスの両方を持つ値オブジェクトをコンボ ボックスに入力する方がよいと思います。そうすれば、後から XML で検索する代わりに、elementPicker.selectedItem.imgPath を使用できます。このソリューションにより、コードの混乱が少なくなり、高速になります。自分でこれを行うことができない場合は、コンボ ボックスと XML への読み込み方法に関するコードをさらに投稿してください。

コードが非常に大きい場合は、pastebin に投稿して、元の投稿にリンクをドロップするだけです。

あなたが私をなだめたので、私はそれをクラックしました。ここに私の2つの結果があります:

http://www.shaunhusain.com/FlashAvaEditor/

http://www.shaunhusain.com/FlexAvaEditor/

ソースのフレックス 1 を右クリックして、FLA 1 のファイルをここにパッケージ化しました

http://www.shaunhusain.com/FlashAvaEditor/FlashAvaEditor.zip

このアプローチについてどう思うか、または的を外したかどうか教えてください。

于 2012-05-24T21:52:08.597 に答える