Загрузите SWF-файл, скомпилированный для Flash 10, во Flash 9 SWF
Это возможно? Я хотел бы иметь основной SWF-файл, который могут просматривать пользователи, у которых установлена Flash 9 или Flash 10. Внутри этого SWF-файла отдельный модуль будет загружен только для пользователей, у которых установлена Flash 10. Этот модуль будет использовать некоторые расширенные функции Flash 10.
3 ответа
Конечно, это должно работать нормально, как вы и описали. Создайте свой базовый SWF-файл в Flash 9, выполните проверку версии и при необходимости загрузите другой SWF-файл, опубликованный как 10. Flash отобразит расширенные функции SWF-версии v10 независимо от версии SWF-файла, в которую он был загружен.
Просто помните, что версия возвращается в виде строки, поэтому обязательно сделайте parseInt
в теме.
Это должно работать нормально, если вы не пытаетесь использовать определенные библиотеки Flash 10 в Flash 10 SWF, что, вероятно, то, что вы делаете. Я только что попробовал это, и снова Adobe разочаровывает их дизайном и качеством библиотеки Flash/Flex.
Например, я пытался сделать следующее
У меня есть базовый SWF-файл Flash 9, который загружает модуль Flash 10, если пользовательский проигрыватель Flash Player равен 10 или более. Этот модуль Flash 10 заканчивается использованием определенных библиотек Flash 10, таких как: 1) flash.net.NetStreamPlayOptions 2) flash.net.NetStreamPlayTransitions 3) NetStream.play2 К сожалению, когда я это делаю, среда выполнения Flash жалуется, что такого нет вещь как NetStreamPlayOptions, NetStreamPlayTransitions и NetStream.play2. Я попытался обойти это путем дублирования NetStreamPlayOptions и NetStreamPlayTransitions, что дало мне дальнейшее развитие, но, к сожалению, я не смог вызвать NetStream.play2, даже если я приведу экземпляр NetStream в качестве объекта.
Я считаю, что это работает так, потому что базовый SWf, который является Flash 9, использует playerglobal.swc, предназначенный для Flash 9. Когда он загружает Flash 10 SWF, он все равно заканчивается использованием Flash 9 playerglobal.swc, потому что среда был инициализирован для Flash 9, что вызывает проблемы с Flash 10 SWF. Я еще не нашел способ обойти это.
Когда Flash переключался с AS1 -> AS2 -> AS3, имело смысл, почему он не был обратно совместим, но теперь AS3 не всегда может загрузить AS3, что, на мой взгляд, очень разочаровывает.
Прошло много времени с тех пор, как я не разрабатываю флеш-приложения, но хорошо... это мои 2 цента:
Возможно, вам придется скомпилировать основной Flash до 10, и это может быть проблемой из-за предупреждения об обновлении.
Это возможный обходной путь: http://codeofdoom.com/wordpress/2009/02/09/compiling-to-flash-10-requiring-flash-9/
Сделав это, я думаю, что легко определить версию флэш-памяти и загрузить различные модули SWF, как вы говорите.