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

时间:2015-01-19 16:50:01

标签: php mysql actionscript-3 flash

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

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

我遇到的问题是我每隔8秒就尝试运行一次这段代码,但是当我运行代码并且trace(urlRequest);时,我会在不到20秒的时间内获得100条跟踪!

我认为给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;
    }
}

1 个答案:

答案 0 :(得分:4)

addEventListener(Event.ENTER_FRAME,checkForNewOrder);

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

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

摆脱输入框架寄存器,你应该好好去。