在 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 将添加对该函数的额外调用。它不会覆盖输入框。
去掉输入框寄存器,你应该可以开始了。
我正在使用以下代码检查 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 将添加对该函数的额外调用。它不会覆盖输入框。
去掉输入框寄存器,你应该可以开始了。