Передайте файл из AS3 во встроенную оболочку AS2 для загрузки - PullRequest
1 голос
/ 07 марта 2012

У меня есть приложение Flash AS3, которое использует FileReference.browse () для запроса SWF-файла от пользователя. Если выбранный SWF - AS3, я готов. Однако, если это AS2, мне нужно сначала загрузить его в оболочку AS2 (чтобы мое приложение могло его изменить). Все эти файлы (включая мое приложение и оболочку) должны существовать локально на компьютере пользователя, но выбранный ими файл может существовать в любом каталоге. Для ясности: основное приложение (AS3) -> Wrapper (AS2) -> файл пользователя (AS2)

Я знаю, как получить версию ActionScript загруженного файла из переменной loaderInfo.actionScriptVersion в Loader, и это работает правильно. Моя проблема заключается в том, как передать файл из приложения AS3 в оболочку AS2, чтобы он мог загрузить его.

Моей первой мыслью было сбросить ByteArray из функции loadRe) FileReference в «cookie» SharedObject. Этот метод казался довольно плохим с точки зрения пользовательского опыта, но, скорее всего, он работал. Однако я не смог найти ни одного метода в AS2 для загрузки ByteArray как фильма (на самом деле, AS2 даже не имеет класса ByteArray). Таким образом, первое потенциальное решение моей проблемы было бы, если бы кто-нибудь знал о способе загрузки фильма из ByteArray в AS2.

Моя вторая мысль состояла в том, чтобы передать путь загруженного файла в мою оболочку через уже настроенный мост LocalConnection, а затем просто загрузить его из этого файла. Однако я не могу найти способ получить путь к файлу, и мой поиск в Google предлагает модель безопасности, намеренно предотвращающую ее. Не говоря уже о том, что я не уверен, что могу загрузить произвольный файл с компьютера пользователя.

Моим решением «руки вверх в воздух; я сдаюсь» было просто создать отдельные кнопки для загрузки файлов AS3 и AS2 (чтобы пользователи могли угадать, что это такое!) И чтобы кнопка AS2 находилась внутри кнопки. Обертка AS2. Тем не менее, похоже, что AS2 не имеет файла , просматривающего API загрузки, и PHP-гибридные решения, которые я обнаружил, не подходят (потому что они предназначены для локального запуска). *

Итак, я был бы вечно благодарен, если бы кто-нибудь мог указать мне правильное направление для решения любого из этих трех контрольно-пропускных пунктов. Альтернативные обходные пути, конечно, приветствуются.


(Edit) Хорошо, я нашел документацию для версии класса FileReference для AS2. Он поддерживает те же возможности просмотра файлов, но не поддерживает прямую загрузку выбранного файла в SWF-файл.

Однако песочница безопасности не выглядит столь строгой для локальных файлов, как я ожидал, и похоже, что я могу загрузить любой SWF-файл на компьютер пользователя, как только у меня будет путь к нему. Так что я должен иметь возможность использовать JavaScript и HTML-форму с вводом файла, чтобы получить и передать путь к файлу в мое приложение. Это не идеальное решение делать все это из веб-браузера, но это должно работать. Если получится удовлетворительно, я отправлю это как ответ.


(Изменить 2) Поцарапайте идею HTML-формы. Похоже, что путь скрыт от JavaScript по тем же причинам, по которым его скрывает Flash. Единственный вариант, о котором я могу подумать сейчас, - попросить пользователя скопировать и вставить путь к файлу ...

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Ну, все мои другие лиды иссякли, поэтому я отправляю два ответа, которые на самом деле будут работать, хотя ни один из них не идеален:

A) Используйте Adobe AIR, что даст больше доступа кфайловая система (например, для получения информации о пути) за счет необходимости установки отдельной среды выполнения AIR.

B) Попросите пользователя самостоятельно ввести путь к файлу (громоздко для пользователя)

0 голосов
/ 10 марта 2012

Прочитав ваше сообщение, вы сможете повторить одну из своих предыдущих попыток с новой информацией. Actionscript 2 ДОЛЖЕН иметь метод поиска файлов из браузера, такой же, как AS3. AS2 также имеет класс FileReference. Ознакомьтесь с документацией здесь:

http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001040.html

Кроме того, вот учебник:

http://markshu.ca/imm/flash/tutorial/fileReference.html

...