Итак, моя проблема может быть немного больше, но я не уверен. Я создаю пользовательский просмотрщик флэш-фотографий для клиента, который динамически загружает изображения с помощью объектов Loader. Он берет имя папки в указанном каталоге на сервере и вызывает страницу php (используя URLRequest), чтобы получить работоспособное содержимое папки. И затем он загружает его из этого массива.URLRequest или Loader просто не работает на некоторых компьютерах?
В этом случае проблема заключается в том, что она работает на моей машине и на каждой машине, на которой я тестировал ее, но она НЕ работает на машине моего клиента или на некоторых машинах его клиента. Панель загрузчика, которая находится внизу экрана, не начинает заполняться, что означает, что изображения не начинают равномерно загружаться, а строка состояния указывает, что она продолжает ждать сервер, но никогда не заканчивается. Это согласовано на одной машине, но зависит от разных машин.
Я добавил диагностику (пользовательский класс, который я сделал для отслеживания определенных варов и сбора ошибок), чтобы что-то ловить любые ошибки, но ничего не сообщает о машине моего клиента. Я добавил код проверки флеш-версии, поэтому возможность более низкой версии испортить его не удалась ...
Я думаю, мой вопрос в том, есть ли что-либо (безопасность, окружающая среда и т. Д.), Что я мог бы упустить из виду, что не разрешает объекты запроса или что-то работать на определенных машинах? Я разорвал свои волосы, пытаясь понять это!
Мой код (соответствующие разделы):
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;
}
}
Кроме того, here's the player live on the site. Ctrl + Alt + Home вызывает панель диагностики. Скажите, пожалуйста, если это не сработает для вас, поэтому я могу больше беспокоиться об этом ...:/Спасибо.
Редактировать: Я добавил дополнительную информацию об отладке. Оказывается, что на компьютерах, которые не могут загрузить его, они получают статус HTTP 0, возвращенный при попытке загрузить информацию об альбоме. Я понятия не имею, что это значит ...
Изображения загружаются для меня, FF4 Beta, Flash Player 10.1. И Chrome 5 и Safari 5, и IE8. – Aaron
Работает для меня, а также FF 3.6.8 и IE 8 (хотя по некоторым причинам много медленнее FF) – Tommy
Работает для меня OSX Snow Leopard, Chrome 6.0.472.41 beta, FF 3.6.6, Opera 10.53, Safari 5.0.1 , Flash Player 10.1 версия отладки – PatrickS