2012-04-12 1 views
1

Я хочу иметь возможность загружать локальные SWF-файлы в настольном приложении AIR. Файлы SWF расположены вне самого приложения на жестком диске пользователя.Загрузить локальный SWF в AIR

код я использую следующим образом:

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
loader.load(new URLRequest("/Users/Oliver/Documents/sample.swf")); 

Файл существует. Я могу проверить свое существование с помощью следующих в Unix:

$ ls /Users/Oliver/Documents/sample.swf

Однако применение бросает ошибку:

Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.

Если я пытаюсь загрузить тот же файл с веб-адресом (например, http://127.0.0.1/sample.swf), нагрузка становится успешной.

Я понял, что AIR может загружать как локальные, так и удаленные файлы. Разве это не так? Как ни странно, в другом месте моего приложения я читаю, записываю и удаляю произвольные файлы из локальной файловой системы без проблем. Но я не могу их загрузить?

ответ

3

Я считаю, что проблема связана с вашим путем. Попробуйте использовать класс File, чтобы получить путь к swf.

var f:File = File.documentsDirectory 
f = f.resolvePath("sample.swf"); 
/* ----- */ 

loader.load(new URLRequest(f.url)); 
+0

Это трюк! Благодаря! Похоже, загрузчик должен использовать схему файла: // URI (или http: // для удаленных файлов). Я отредактировал ваш код, поскольку в нем была небольшая ошибка. –

+0

Вам нужно установить f = f.resolvePath ("sample.swf"); – francis

+1

Жесткое кодирование учетной записи пользователя Oliver заставит это приложение работать только на вашем компьютере – francis