同步actionscript 3中的事件

时间:2014-06-06 10:31:18

标签: actionscript-3 synchronization

我正在尝试从jsp页面加载数据。该数据用于更进一步的操作。 这是我的代码,其中questionBankSize和questionBank是全局变量

public function initialiseQuestionBank():void
{
    questionBankSize = 20;

loadQuestion();

trace(questionBankSize+"");

}

这是我从jsp页面加载数据的代码

private function loadQuestion() {


        var url:String = "http://localhost:8084/JspPages/JsonJsp.jsp";
        var request:URLRequest = new URLRequest(url);
        var requestVars:URLVariables = new URLVariables();
        requestVars.topic_id = 1;   
        request.data = requestVars;
        request.method = URLRequestMethod.POST;

        var urlLoader:URLLoader = new URLLoader();
        urlLoader = new URLLoader();
        urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
        urlLoader.addEventListener(Event.COMPLETE, loaderCompleteHandler, false, 1, true);
        try {
    urlLoader.load(request);
} catch (e:Error) {
    trace(e);
}

}

private function loaderCompleteHandler(e:Event):void {

        var ldr:URLLoader = URLLoader(e.target);
        var responseVars:String = ldr.data;
        var arr:Array = (JSON.decode(responseVars) as Array);
        trace(arr[i]['clue']);
        questionBankSize = arr.length;
        questionBank = new Vector.<String>(questionBankSize);
        for (var i:int = 0; i < questionBankSize; i++ ) {
            questionBank[i] = arr[i]['clue'] + "$" + arr[i]['word'];
        }
        trace(questionBank[0]);
        load = 1; 

}

initialiseQuestionBank()函数中的

trace语句在事件处理程序中的trace语句之前执行。如何先完成事件处理程序的执行,然后执行下一个语句?

1 个答案:

答案 0 :(得分:0)

您需要将问题库加载器封装到扩展Event的对象中。

这样您就可以发送自己的自定义事件。

在构造函数中,您将调用loadQuestion方法,向其传递一个回调函数,该函数将执行在加载questionbank之后要运行的任何代码。这样,您将同时运行事件,并在发出加载结束信号后立即调用代码。