我有一个类,它创建一个url请求并存储来自该请求的数据。当数据被检索,解析并存储到数组中时,我正在发送一个我在文档类中监听的调度事件。在文档类的事件处理函数中,我正在访问从类中编译的数组。类中的数组有15个值,但在我的事件处理函数中,我只从中检索一个值,这是数组中的最后一个值。我在下面发布了我的代码。是否有一种不同的方式我应该使用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);
}
答案 0 :(得分:3)
你处理它的方式看起来很好。我有一种感觉,你的名字数组的长度只有1.把一条痕迹放在一个看看是否就是这个问题。
for (var key:Object in names)
{
trace("counter",counter);
payload[counter] = [names[key].id, names[key].email];
counter++;
}