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);
}