Еще один вопрос от Adobe Air, но сначала немного о проекте, с которым мне поручено работать. Это приложение AIR, которое считывает ресурсы с USB-ключа и должно работать как на WIN, так и на MacOS. Проблема в том, как загрузить ресурсы в приложение на MacOS! Звучит достаточно просто и без проблем работает в Windows.
Вот фрагмент кода того, что я пытаюсь сделать:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
var p:String;
if (os == "mac")
{
p = "/Volumes/" + keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
}
else
{
p = keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
}
var temp:File = new File(p);
Debugger.Display.text += "\nAttempting to load: " + p;
Debugger.Display.text += "\nDoes it exist? " + temp.exists;
loader.load(new URLRequest(p));
... переменная OS и keyVolume успешно устанавливаются в предыдущем коде. Также у меня определены обратные вызовы слушателя событий для ok () и ioErro ().
При запуске он печатает на окнах:
Попытка загрузки: G: \ 0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
Существует ли это: правда
... и затем успешно загружает актив.
На MacOS выводится:
Попытка загрузки: /Volumes/AC/0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
Существует ли это: правда
... а затем каждый раз выдает ошибку IOError.
Кто-нибудь может увидеть то, что мне здесь не хватает? У меня есть какая-то ошибка разрешения или что-то (файл имеет доступ «чтение / запись»). Ключ USB отформатирован в MS-DOS FAT32, это может быть проблемой?
EDIT
Я отформатировал новый USB-ключ в MacOS для FAT16 и безуспешно положил на него файлы. Проблемы остаются.
EDIT
Сейчас я просто пытаюсь загрузить ресурс из / users / -USERNAME- / Desktop и все еще получаю ту же ошибку, поэтому похоже, что проблема не связана с правами доступа только на USB-накопителе, он более распространен чем это.
EDIT
ПРОБЛЕМА РЕШЕНА! Наконец я правильно сформулировал свой поиск в Google, и он показал ответ .
Эти изменения исправят проблему:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
var p:String = keyVolume.rootDirectory.nativePath + ((os == "mac") ? File.separator : "") + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
var temp:File = new File(p);
Debugger.Display.text += "\nAttempting to load: " + temp.url;
Debugger.Display.text += "\nDoes it exist? " + temp.exists;
loader.load(new URLRequest(temp.url));
Я также немного усовершенствовал логическое утверждение, связанное с обнаружением ОС.
Надеюсь, кто-нибудь найдет это полезным!