在 Flash as3 中每 x 秒执行一次函数?

execute function every x seconds in flash as3?

我正在使用以下代码检查 mysql 使用 flash as3 (actionscript 3.0) 的数据库中的更新。

该代码将在我的服务器上使用 PHP 检查数据库,并将在 Flash 应用程序中显示详细信息。

我遇到的问题是,我试图每 8 秒 运行 这段代码,但是当我 运行 代码和 trace(urlRequest); 时,我在更少的时间内得到了 100 条痕迹不到 20 秒!

我认为给出 setInterval(checkDataBase, 8000); 可以解决这个问题,并且每 8 秒 运行 代码,但我没有运气!

有人可以就此问题提出建议吗?

这是我的代码:

addEventListener(Event.ENTER_FRAME,checkForNewOrder);
function checkForNewOrder (e:Event):void 
{
    checkDataBase();
}

/*
function we use to send the form
*/
function checkDataBase ():void 
{
    /*
    we use the URLVariables class to store our php variables 
    */
    var phpVars:URLVariables = new URLVariables();

    phpVars.result_textL = result_textL.text;

    /*
    we use the URLRequest method to get the address of our php file and attach the php vars.
    */
    var urlRequest:URLRequest = new URLRequest("http://mywebsite.com/checkOrder.php");

    trace(urlRequest);  

    /*
    the POST method is used here so we can use php's $_POST function in order to recieve our php variables.
    */
    urlRequest.method = URLRequestMethod.POST;

    /*
    this attaches our php variables to the url request
    */
    urlRequest.data = phpVars;      

    /*
    we use the URLLoader class to send the request URLVariables to the php file
    */
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;

    /*
    runs the function once the php file has spoken to flash
    */
    urlLoader.addEventListener(Event.COMPLETE, showResult);

    /*
    we send the request to the php file
    */
    urlLoader.load(urlRequest);

}

setInterval(checkDataBase, 8000);

/*
function to show result
*/
function showResult (e:Event):void 
{
    orderDetails.text = "" + e.target.data.result_message;

    if(orderDetails.text != "")
    {
        rejectBtn.y = 380.20;
    }
}
addEventListener(Event.ENTER_FRAME,checkForNewOrder);

这会导致您的函数以您设置的帧速率被调用,因此每秒可能调用 30 次。

setIntervall 将添加对该函数的额外调用。它不会覆盖输入框。

去掉输入框寄存器,你应该可以开始了。