我的应用程序要求我能够在连接后阶段的任何时候中止/关闭URLLoader实例;也就是说,不管我是否已经连接并且文件传输已经开始,或者我是否已经连接并且文件传输还没有开始(服务器还没有开始发送文件)。
下面是我的代码:
var myTextLoader:URLLoader = new URLLoader();
myTextLoader.load(new URLRequest("myText.txt"));这是我注意到的:
当我连接到服务器时,服务器立即开始发送文件,在实际的文件传输过程中,如果我调用myTextLoader.close(),它会立即中止。这是意料之中的。我可以通过在Firefox中执行SWF来监视这一点,并注意到当我发出close()时,网络连接从挂起变为中止。
但是,如果我连接到服务器,而文件传输还没有真正开始(我已经确认connect事件已经触发,服务器还没有开始发送文件),那么myTextLoader.close()就不起作用了。只有在开始从服务器传输第一个字节之后,.close()才会生效。我可以验证连接是否在Firebug中处于挂起状态。在传输开始之前,.close()不起作用。
有什么办法解决这个问题吗?我需要能够调用.close(),并在不考虑连接阶段的情况下断开连接。
发布于 2012-10-07 16:29:00
使用close()时,第三方AS3 HTTPClient (https://github.com/gabriel/as3httpclient)似乎未出现此问题。
发布于 2012-10-07 06:55:33
我首先想到的是,在调用close()方法的地方创建一个被设置为true的bool "aborted“。像这样:
function abort():void {
_aborted = true;
myTextLoader.close();
}然后在onProgress事件或任何类似事件中的任何位置检查它的值,以便在它的值为真时再次实际调用URLLoader close()方法...
function onProgress(evt:ProgressEvent):void {
if (_aborted) {
myTextLoader.close();
}
}它不是一个漂亮的东西,是一个丑陋的变通方法,但它可以工作,因为当第一个比特实际收到时,你就会知道你是否已经想要关闭它。
你有没有找到任何关于这方面的bug报告?我怀疑这可能是故意的行为..。
https://stackoverflow.com/questions/12764543
复制相似问题