AS2等待返回

时间:2015-07-05 19:29:11

标签: php actionscript-2 listeners

我正在研究AS2项目。我目前有一个链接到一些PHP数据包的函数。基本上,数据包被发送,然后根据参数发回一些信息。简单,真的。

问题是原始函数需要返回该数据。所以我需要等待数据包返回才能返回。除非您不能将“return”作为听众的功能附加。

function handleReturnNicknameById(id)
{
    nFunctionComplete = 0;
    trace("api : handleGetSwidById");
    AIRTOWER.send(AIRTOWER.PLAY_EXT, "friends#getPlayerInfoById", [id], "str", SHELL.getCurrentServerRoomId());
    AIRTOWER.addListener('getPlayerInfoById', handleReturnNickname);
    while(nFunctionComplete < 700)
    {
        if(nickReady == true)
        {
            nFunctionComplete = 701;
            return(nickToReturn);
        }
        nFunctionComplete++;
    }
}
function handleReturnNickname(obj)
{
    AIRTOWER.removeListener('getPlayerInfoById', handleReturnNickname);
    obj.shift();
    nickToReturn = obj[1];
    nickReady = true;
}

这是我让它发挥作用的唯一想法。我知道这是非常无效的,这就是我在这里寻求帮助的原因。

最终问题是:在AS2中,你可以在返回之前让函数“等待”吗?

1 个答案:

答案 0 :(得分:0)

要执行您要查找的内容,您可以使用在加载数据时调用的callback function。所以你的代码是这样的:

function handleReturnNicknameById(id:Number, callback:Function): Void
{
    AIRTOWER.send(AIRTOWER.PLAY_EXT, "friends#getPlayerInfoById", [id], "str", SHELL.getCurrentServerRoomId());
    AIRTOWER.addListener('getPlayerInfoById', handleReturnNickname);

    function handleReturnNickname(obj): Void
    {
        AIRTOWER.removeListener('getPlayerInfoById', handleReturnNickname);
        obj.shift();
        var nickToReturn = obj[1];

        // run the callback function and pass the needed data
        callback(nickToReturn);
    }

}

// this function is called only when data is loaded
function my_callback(data): Void 
{
    // here you can use your data
    trace('loaded data : ' + data);
}

并执行所有这些:

handleReturnNicknameById(id, my_callback);

希望可以提供帮助。