1

我有一个类,它发出一个 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);
    }
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 回答