1

URLリクエストを作成し、そのリクエストからのデータを保存するクラスがあります。データが取得、解析され、配列に格納されると、ドキュメント クラスでリッスンするディスパッチ イベントを送信します。ドキュメント クラスのイベント ハンドラー関数では、クラスからコンパイルされた配列にアクセスしています。クラス内の配列には 15 個の値がありますが、私のイベント ハンドラー関数では、配列の最後の値である値を 1 つだけ取得しています。以下にコードを投稿しました。1 つではなくすべての配列値を取得するために、dispatchEvent を使用する別の方法はありますか?

ありがとう!

クラス

package com.src

{
 import flash.display.Sprite;
 import flash.net.URLRequest;
 import flash.net.URLLoader;
 import flash.events.*;
 import com.src.serialization.json.JSON;

 public class DataGrab extends Sprite
 {
  public var payload:Array;

  public function DataGrab()
  {
  }

  public function init(resource:String):void
  {
   var loader:URLLoader = new URLLoader();
   var request:URLRequest = new URLRequest(resource);
   loader.addEventListener(Event.COMPLETE, onComplete);
   loader.load(request);
  }

  private function onComplete(e:Event):void
  {
   var loader:URLLoader = URLLoader(e.target);
   var jsonData:Object = JSON.decode(loader.data);

   var people = jsonData.people;
   var names:Array = people.name;
   var counter:Number = 0;
   payload = new Array();
   for (var key:Object in names)
   {
    payload[counter] = [names[key].id, names[key].email];
    counter++;
   }
   dispatchEvent(new Event(Event.COMPLETE));
  }

  public function getResults():Array
  {
    //payload has 15 values
    return payload;
  }
 }
}

ドキュメント クラス

    public function queryServer(url:String):void
    {
        grabData = new DataGrab();
        grabData.addEventListener(Event.COMPLETE, dataReadyHandler);
        resultData  = new Array();
        grabData.init(url);

    }

    public function dataReadyHandler(e:Event):void
    {
        grabData = e.target as DataGrab;
        resultData  = grabData.getResults();

            //only has 1 value, the last value in the payload array
        trace(resultData);
    }
4

1 に答える 1

3

あなたがそれを処理している方法はうまく見えます。名前配列の長さが 1 しかないように感じます。トレースを入れて、それが問題かどうかを確認してください。

for (var key:Object in names) 
{ 
    trace("counter",counter);
    payload[counter] = [names[key].id, names[key].email]; 
    counter++; 
} 
于 2009-11-06T03:12:32.500 に答える