У меня есть приложение 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. Единственный вариант, о котором я могу подумать сейчас, - попросить пользователя скопировать и вставить путь к файлу ...