as3 AIR在移动设备上的URLRequest被卡住(尝试或捕获?)

时间:2014-05-23 03:47:41

标签: actionscript-3 air try-catch urlrequest

我在移动设备上加载了URLRequest。如果互联网不稳定就会停止。它大部分时间都有效,但有时会卡在一定的百分比上。有没有办法看看加载是否已经停止并让它在3秒或之后的某种情况下“重试”?它可以尝试,比方说,10次,之后抛出一条错误信息,以便告诉用户?

public function loadIt()
{
var theImage = "http://www.Example.com/Example.png"; // real url not given here
my_loader.load(new URLRequest(theImage));
my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, startListener);

my_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
    if(autoPlayAd=="true")
    {
    playAd();
    }
}



public function progressListener(e:ProgressEvent):void
    {
    loadingStatus.Per.text = Math.floor((e.bytesLoaded/e.bytesTotal)*100)+ "%";
    }

1 个答案:

答案 0 :(得分:2)

不幸的是,Flash没有内置系统来执行此类任务。但实现起来并不难。 您可以使用URLRequest的idleTimeout属性来设置特定超时:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest.html#idleTimeout 然后你可以捕获因超时而被触发的错误事件,然后重试。

我通常不使用它,我有一个简单的Timer对象,假设间隔为10秒。当我开始加载(loader.load())时,我也启动了计时器(timer.start())。有两个简单的属性 - isLoading <Boolean>retries <uint>。然后,TIMER_TICK事件触发,我检查if (isLoading),如果是这样 - 停止请求(关闭,卸载,您可以在加载器中执行的所有操作,但使用try-catch语句),然后再次启动请求。当然 - 增加retries变量,如果它等于你的最大重试次数 - 它会停止加载。

祝你好运!