1
URL 요청을하고 해당 요청의 데이터를 저장하는 클래스가 있습니다. 데이터가 검색되어 배열로 저장 될 때, 나는 내 문서 클래스에서 수신 대기하는 발송 이벤트를 보내고있다. 문서 클래스의 이벤트 처리기 함수에서 클래스에서 컴파일 된 배열에 액세스하고 있습니다. 클래스 내부의 배열에는 15 개의 값이 있지만 내 이벤트 핸들러 함수에서는 배열의 마지막 값인 하나의 값만 검색합니다. 아래 코드를 게시했습니다. 배열 값을 모두 검색하는 대신 dispatchEvent를 사용해야하는 다른 방법이 있습니까?AS3 Dispatch Event from Class
감사합니다.
는 클래스
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);
}