我在移动设备上加载了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)+ "%";
}
答案 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
变量,如果它等于你的最大重试次数 - 它会停止加载。