Так что моя проблема может быть немного больше, но я не уверен.Я создаю специальный просмотрщик фотографий для клиента, который динамически загружает изображения с помощью объектов Loader.Он берет имя папки в указанном каталоге на сервере и вызывает страницу php (используя URLRequest), чтобы получить работоспособное содержимое папки.И затем он загружает его из этого массива.
Вот проблема: она работает FINE на моей машине и на каждой машине, на которой я ее тестировал, но она НЕ работает на машине моего клиента или некоторых машин его клиента.Строка загрузчика, расположенная в нижней части экрана, не начинает заполняться, это означает, что изображения даже не начинают загружаться, а строка состояния указывает, что она продолжает ожидать сервер, но никогда не заканчивает ожидание.Это согласуется на одной машине, но различается на разных машинах.
Я добавил диагностику (пользовательский класс, который я сделал для отслеживания определенных переменных и сбора ошибок), чтобы обнаруживать любые ошибки, но он ничего не сообщаетна машине моего клиента.Я добавил код проверки флэш-версии, так что вероятность того, что более низкая версия испортит его, исчезла ...
Наверное, мой вопрос: есть ли что-нибудь (безопасность, окружение и т. Д.), Которое я мог бы иметьупущено из виду, что не позволяет объектам запроса или что-то работать на определенных машинах ??Я рвал на себе волосы, пытаясь понять это!
Мой код (соответствующие разделы):
public static const LOADLIMIT:int = 4;
public var paramObj:Object;
private var imageRequests:Vector.<URLRequest>;
private var loaderObj:Vector.<Loader>;
private var nextToLoad:int = -1;
//...
public function Player(){
//...
paramObj = loaderInfo.parameters;
if (!paramObj.root) paramObj.root = "http://site.com/images/";
paramObj.imgloc = paramObj.imgloc;
var res = bootstrapImages(paramObj.imgloc);
if (res is String){
loadErrorMsg.text = res;
loadErrorMsg.visible = true;
log.log(res);
}
//...
}
private function bootstrapImages(imgloc:String):*{
try{
if (!imgloc) return "No image location specified";
var req:URLRequest = new URLRequest(paramObj.root+"getdirlist.php?name="+imgloc);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, directoryLoaded);
loader.addEventListener(IOErrorEvent.IO_ERROR, function(ex:IOError){
loadErrorMsg.text = "Error retreiving album data.";
loadErrorMsg.visible = true;
log.log(ex);
});
loader.load(req);
} catch (ex:Error){
log.log(ex); throw ex;
}
}
private function directoryLoaded(e:Event){
try{
//directory will come down as a json array
trace(e.target.data);
try {
var items:Array = JSON.decode(e.target.data);
} catch (ex:Error){
trace (ex.getStackTrace());
loadErrorMsg.text = "Error parsing album data.";
loadErrorMsg.visible = true;
log.log(ex);
return;
}
if (items.length == 0){
loadErrorMsg.text = "Invalid album name";
loadErrorMsg.visible = true;
log.log("Items length is 0.");
return;
}
imageRequests = new Vector.<URLRequest>();
loaderObj = new Vector.<Loader>();
for each(var item:String in items){
imageRequests.push(new URLRequest(paramObj.root+"coffeeimages/"+paramObj.imgloc+"/"+item));
loaderObj.push(null);
}
//...show UI...
for (var i:int = 0; i < LOADLIMIT; i++){
imageLoaded(null);
}
} catch (ex:Error){
log.log(ex); throw ex;
}
}
private function imageLoaded(e:Event){
try{
//if this was called as a result of the load event, start the slideshow! :D
if (e != null && e.target != null) {
//stage.addChild((e.target as LoaderInfo).loader);
trace(loaderObj[0]);
if (loaderObj[0] != null && //if the first image is loaded
loaderObj[0].contentLoaderInfo.bytesLoaded >= loaderObj[0].contentLoaderInfo.bytesTotal){
trace(loaderObj[0].contentLoaderInfo.bytesLoaded, loaderObj[0].contentLoaderInfo.bytesTotal);
loadErrorMsg.visible = false;
playSlideshow(true);
}
}
trace((e)?e.target:null, loaderObj);
nextToLoad++;
if (nextToLoad >= imageRequests.length) return;
var r:URLRequest = imageRequests[nextToLoad];
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function(ex:ErrorEvent){
loadErrorMsg.text = "Error parsing image data.";
loadErrorMsg.visible = true;
log.log(ex);
});
l.load(r);
loaderObj[nextToLoad] = l;
log.addObjectWatch(l);
} catch (ex:Error){
log.log(ex); throw ex;
}
}
Кроме того, вот игрок в прямом эфире на сайте .Ctrl + Alt + Home вызывает мою панель диагностики.Пожалуйста, скажите мне, если это не работает для вас, так что я могу больше беспокоиться об этом ...: / Спасибо.
Редактировать: Я добавил больше отладочной информации.Оказывается, что на компьютерах, которые не могут его загрузить, они возвращают HTTP-статус 0, возвращаемый при попытке загрузить информацию об альбоме.Я понятия не имею, что это значит ...