Почему IOErrorEvents не содержит URL при автономной работе?
Вот простой пример URLLoader
,
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("http://example.com/doesntexist.txt");
loader.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent){
textbox.text = e.toString(); // Text box on stage
});
loader.load(request);
Это ведет себя странно.
При запуске из Flash или отладке из Flash ошибка выглядит следующим образом.
[IOErrorEvent type = "ioError" bubbles = false cancellable=false eventPhase=2 text="Ошибка № 2032: ошибка потока. URL: http://example.com/doesntexist.txt "]
Но, когда работает как .swf
или .exe
проектор, это выглядит так.
[IOErrorEvent type = "ioError" bubbles = false отменяемый = false eventPhase = 2 text = "Ошибка #2032"]
Почему это так? Есть ли способ получить первый результат в автономном режиме?
РЕДАКТИРОВАТЬ: Мне нужно, чтобы он работал как проектор.
2 ответа
Хотя я не уверен в том, почему (возможно, за кулисами в флеш-плеере стоит вопрос эффективности), вот способ выполнить то, что вам нужно:
Вы можете написать собственный класс, который расширяет URLLoader
который хранит URL для вас.
package
{
import flash.net.URLLoader;
import flash.net.URLRequest;
public class MyURLLoader extends URLLoader
{
public var request:URLRequest; //all were doing here is adding this public property and setting it when loading into the URLLoader
public function MyURLLoader(request_:URLRequest) {
request = request_;
super(request);
}
override public function load(request_:URLRequest):void
{
request = request_;
super.load(request);
}
}
}
Затем при обработке вашей ошибки вы можете ссылаться на URL следующим образом:
var loader:MyURLLoader = new MyURLLoader();
var request:URLRequest = new URLRequest("http://example.com/doesntexist.txt");
loader.addEventListener(IOErrorEvent.IO_ERROR, function(e:IOErrorEvent){
textbox.text = e.toString() + " URL: " + MyURLLoader(e.currentTarget).request; // Text box on stage
});
loader.load(request);
Установите Debugger Flash Player по адресу: http://www.adobe.com/support/flashplayer/downloads.html Это поможет вам.