3

新しいプロジェクトで、値オブジェクトからのデータの読み込みとアクセスに問題があります。アセット ファイルのタイトルと場所を含む xml ファイルをサービス経由で読み込みます。アセット ファイルの場所にアクセスできる必要があります。タイトルを指定し、それを値オブジェクトから取得します。私は Robotlegs フレームワークを使用しています。xml の例を次に示します。

<?xml version="1.0" encoding="utf-8" ?>
<files id ="xmlroot">
<file title="css_shell"                 location = "css/shell.css"  />
<file title="xml_shell"                 location = "xml/shell.xml"  />
<file title="test"                      location=   "test/location/test.jpg" />
<file title ="shell_background_image"   location = "images/shell_images/background_image.jpg" />
</files>

次に、このデータをディクショナリ ハッシュとして値オブジェクトにプッシュします。

//-----------  populate value objects ------------------------------------
var xml:XML = new XML(xml);
var files:XMLList = xml.files.file;

for each (var file:XML in files) {
var filePathVO:DataVO = new FilePathVO( file.@title.toString(),
     file.location.toString()
);

 filePathModel.locationList.push(filePathVO);
filePathModel.locationHash[filePathVO.title] = filePathVO;
 }

ビューコンポーネントからこれにアクセスすることをテストしました。

// accessing from another class -----------------

var _background_image_path:String = String( filePathModel.locationHash['shell_background_image']);

それは未定義を返します..何かアイデアはありますか?

4

1 に答える 1

1

@この行の for location 属性を忘れました:

var filePathVO:DataVO = new FilePathVO(file.@title.toString(),
     file.location.toString());

本当の問題は次の行にあります。

var files:XMLList = xml.files.file;

に変更します

var files:XMLList = xml.file;

このxml変数は、xml のルート タグを参照します。で明示的にアクセスする必要はありませんxml.files。root-xml タグの直接の子であるタグの直接の子であるタグをxml.files.file実際に探します。あなたのxmlが次のようなものであればうまくいきました:filefiles

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <files id ="xmlroot">
    <file title="css_shell" location = "css/shell.css"  />
    <file title="xml_shell" location = "xml/shell.xml"  />
    <file title="test" location=   "test/location/test.jpg" />
    <file title ="shell_background_image" location = "images/shell_images/background_image.jpg" />
  </files>
</root>
于 2010-07-01T04:41:09.657 に答える