Введение

Формат файлов Adobe Flash

Формат файлов Adobe Flash, иногда называемый "Shockwave Flash"

SWF ('/s//w//ɪ//f/) — устаревший формат файлов Adobe Flash, который использовался для мультимедиа, векторной графики и ActionScript. Возникнув в FutureWave Software, затем перешедший к Macromedia, а впоследствии оказавшийся под контролем Adobe, SWF-файлы могут содержать анимацию или апплеты различной степени интерактивности и функциональности. Они также могут использоваться в программах, чаще всего в браузерных играх, работающих на ActionScript. Программисты могут создавать SWF-файлы в различных продуктах Adobe, включая Flash, Flash Builder (IDE), Adobe Animate (переименованный Adobe Flash с 2016 года) и After Effects, а также с помощью MXMLC — компилятора приложений командной строки, входящего в состав свободно распространяемого Flex SDK. Хотя Adobe Illustrator может генерировать файлы формата SWF через функцию "экспорт", он не может их открывать или редактировать. Помимо продуктов Adobe, SWF-файлы можно создавать с помощью компилятора Motion Twin ActionScript 2 (MTASC), библиотеки Ming с открытым исходным кодом и бесплатного программного пакета SWFTools. Различные сторонние программы также могут создавать файлы в этом формате, такие как Multimedia Fusion 2, Captivate и SWiSH Max. Термин "SWF" изначально возник как сокращение от ShockWave Flash. Позже это использование было изменено на ретроним Small Web Format, чтобы избежать путаницы с другой технологией — Shockwave, от которой произошел SWF. Adobe официально не расшифровывает аббревиатуру "SWF". Компания Adobe объявила о прекращении поддержки Flash Player 31 декабря 2020 года. 12 января 2021 года было выпущено обновление Flash Player, которое заблокировало запуск любого Flash-контента.

История

Небольшая компания FutureWave Software изначально определила формат файла с одной главной целью: создавать небольшие файлы для отображения развлекательных анимаций. Идея заключалась в формате, который проигрывающее программное обеспечение могло бы запускать на любой системе и который бы работал при медленных сетевых соединениях. FutureWave выпустила FutureSplash Animator в мае 1996 года. В декабре 1996 года Macromedia приобрела FutureWave, и FutureSplash Animator стал Macromedia Flash 1.0. Изначальное название SWF возникло из желания Macromedia использовать узнаваемость бренда Macromedia Shockwave; Macromedia Director создавал файлы Shockwave для конечных пользователей, поэтому файлы, созданные их новым продуктом Flash, стремились воспользоваться уже устоявшимся брендом. Когда Flash стал популярнее самого Shockwave, это решение в области брендинга стало скорее недостатком, поэтому формат стали называть просто SWF. 1 мая 2008 года Adobe сняла лицензионные ограничения со спецификаций формата SWF в рамках проекта Open Screen. Однако Роб Савой, участник команды разработчиков Gnash, указал на некоторые части формата Flash, которые остаются закрытыми. 1 июля 2008 года Adobe предоставила код компаниям Google и Yahoo, что позволило их поисковым системам сканировать и индексировать файлы SWF.

Описание

Главным графическим примитивом в SWF является путь, представляющий собой цепочку сегментов примитивных типов, от линий до сплайнов или кривых Безье. Дополнительные примитивы, такие как прямоугольники, эллипсы и даже текст, могут быть построены на их основе. Графические элементы в SWF, таким образом, довольно похожи на SVG и MPEG 4 BIFS. SWF также использует списки отображения и позволяет присваивать имена и повторно использовать ранее определенные компоненты. Изначально формат был ограничен представлением векторных объектов и изображений в простой последовательной манере, но в более поздних версиях он поддерживает аудио (начиная с Flash 3) и видео (начиная с Flash 6). В версии 11 Flash Player компания Adobe представила новый низкоуровневый 3D API. Изначально известный под кодовым названием Molehill, этот API в конечном итоге получил официальное название Stage3D. Он был разработан как аналог OpenGL или Direct3D. В Stage3D шейдеры записываются на языке низкого уровня, называемом Adobe Graphics Assembly Language (AGAL).

Усыновление

Adobe предоставляет плагины, такие как Adobe Flash Player и Adobe Integrated Runtime, для воспроизведения SWF-файлов в веб-браузерах на многих настольных операционных системах, включая Microsoft Windows, Mac OS X и Linux на архитектурах x86 и ARM (только ChromeOS). GNU начала разработку свободного SWF-плеера под названием Gnash под лицензией GNU General Public License (GPL). Несмотря на то, что проект GNU был объявлен приоритетным, финансирование Gnash было довольно ограниченным. Adobe интегрировала воспроизведение и создание SWF в другие свои продукты и технологии, в том числе в Adobe Shockwave, который обрабатывает более сложные документы. InDesign CS6 также может создавать некоторые ограниченные формы SWF-анимаций напрямую. Консоли Sony PlayStation Portable могут воспроизводить ограниченные SWF-файлы в веб-браузере Sony, начиная с версии прошивки 2.71. И Nintendo Wii, и Sony PS3 могут запускать SWF-файлы через свои интернет-браузеры. Scaleform GFx — коммерческая альтернатива SWF-плееру, которая обеспечивает полное аппаратное ускорение с использованием GPU и высокую степень совместимости до Flash 8 и AS2. Scaleform GFx лицензируется как промежуточное программное обеспечение для игр и используется многими компьютерными и консольными 3D-играми для пользовательских интерфейсов, HUD, мини-игр и воспроизведения видео. Новые 3D-функции SWF рассматривались как альтернатива WebGL, что привело к появлению 3D-движков, таких как Papervision3D, Away3D, Sandy 3D и Alternativa 3D, ориентированных на 3D SWF. Хотя некоторые из этих проектов начались около 2005 года, до Flash Player 10 они не поддерживали ускорение GPU, и даже в этой версии Flash Player шейдеры можно было использовать только для определенных материалов, а информация о вершинах все еще обрабатывалась на CPU (с использованием BSP-деревьев и т. п.). Согласно независимому исследованию, проведенному Millward Brown и опубликованному Adobe, в 2010 году более 99% настольных веб-браузеров на "развитых рынках" (определенных как США, Канада, Великобритания, Франция, Германия, Япония, Австралия и Новая Зеландия) имели установленный плагин SWF, при этом около 90% использовали последнюю версию Flash Player. В связи с растущей популярностью HTML5 для игр и анимации, а также с многочисленными уязвимостями в безопасности SWF-плеера Adobe, компания Adobe объявила о прекращении поддержки Flash Player 31 декабря 2020 года. 12 января 2021 года было выпущено обновление для Flash Player, которое заблокировало запуск любого Flash-контента.

Опубликованные спецификации

Adobe предоставляет частичную спецификацию SWF, последний раз обновленную в январе 2013 года, чтобы отразить изменения в SWF версии 19. После Flash 10 версии SWF перестали быть привязаны к версиям Flash Player. Впоследствии номер версии SWF быстро рос; SWF версия 19 соответствует новым функциям, добавленным в Flash Player 11.6. Flash Player 14 использует SWF версию 25. В 2008 году Роб Савойе, ведущий разработчик проекта Gnash, раскритиковал документ спецификаций за отсутствие "огромного количества" информации, необходимой для полной реализации SWF, в частности, спецификаций для RTMP и Sorenson Spark. Документ был опубликован в июне 2009 года. Кодек Sorenson Spark не принадлежит Adobe.

Лицензирование

До 1 мая 2008 года лицензия спецификации запрещала реализацию программного обеспечения для воспроизведения SWF. В этот день, в рамках проекта Open Screen, Adobe сняла все подобные ограничения с форматов SWF и FLV. Реализация программного обеспечения для создания SWF-файлов всегда была разрешена при условии, что создаваемые файлы будут корректно отображаться в последней общедоступной версии Adobe Flash Player.

Соответствующие форматы файлов и расширения

Другие форматы, связанные с созданием SWF в инструментарии Adobe, не имеют публичной спецификации. Одним из примеров является FLA — редактируемая версия SWF, используемая Adobe Flash, но не другими инструментами Adobe, которые также могут выводить SWF, хотя и с меньшим набором функций. Расширение Описание abc Байт-код ActionScript, используемый виртуальной машиной ActionScript (AVM) для Flash 8 и более ранних версий, и AVM2 для Flash 9 и более поздних. amf Команды Action Message для обмена данными с FMS. as Исходный код ActionScript в простых файлах. Файлы FLA также могут содержать код ActionScript напрямую, но отдельные внешние файлы часто создаются по структурным соображениям или для обеспечения контроля версий кода. asc Server Side ActionScript, используемый для разработки эффективных и гибких клиент-серверных приложений Macromedia Flash Communication Server MX. aso Кэш-файлы, используемые в процессе разработки Flash, содержащие скомпилированный байт-код ActionScript. Файл ASO воссоздается при обнаружении изменений в соответствующих файлах классов. Иногда Flash IDE не распознает необходимость перекомпиляции, и эти кэш-файлы необходимо удалять вручную. Они находятся в %USERPROFILE%\Local Settings\Application Data\Macromedia\Flash8\en\Configuration\Classes\aso на Win32 / Flash8. f4a Суффикс Adobe для файлов iTunes M4A, содержащих только аудиопотоки. fla Исходный материал для Flash-приложения. Программное обеспечение для создания Flash может редактировать файлы FLA и компилировать их в файлы SWF. В настоящее время формат исходного файла Flash — это двоичный формат, основанный на Microsoft Compound File Format. В Flash Pro CS5 формат файла FLA представляет собой ZIP-архив со структурой проекта на основе XML. flp XML-файлы, используемые для ссылок на все файлы документов, содержащиеся в проекте Flash. Flash-проекты позволяют пользователю группировать несколько связанных файлов для организации, компиляции и сборки проекта Flash. flv Файлы Flash-видео, созданные Adobe Flash, ffmpeg, Sorenson Squeeze или On2 Flix. Аудио- и видеоданные в файлах FLV кодируются аналогично файлам SWF. fxg Унифицированный XML-формат, разрабатываемый Adobe для Flex, Flash, Photoshop и других приложений. jsfl Добавляет функциональность в среде разработки Flash; они содержат код JavaScript и обращаются к Flash JavaScript API. mxml Используется совместно с файлами ActionScript (и файлами CSS) и предлагает синтаксис в стиле языка разметки (например, HTML) для проектирования графического интерфейса в Flex. Каждый файл MXML создает новый класс, расширяющий класс корневого тега, и добавляет вложенные теги в качестве дочерних элементов (если они являются потомками UIComponent) или членов класса. sol Контейнер Adobe Flash Player для хранения локальных общих объектов (данные, хранящиеся на системе, где работает Flash Player). spl Документы FutureSplash Animator. swc Контейнер для распространения компонентов; он содержит скомпилированный фрагмент, файл класса ActionScript компонента и другие файлы, описывающие компонент. swd Временные файлы отладки, используемые в процессе разработки Flash. После завершения разработки проекта Flash эти файлы больше не нужны и могут быть удалены. swf Завершенные, скомпилированные и опубликованные файлы, которые нельзя редактировать в Adobe Flash. Однако существует несколько декомпиляторов SWF, не разработанных Adobe (например, Sothink), для преобразования SWF обратно в формат FLA или в более новый формат Apache Flex. Попытка импортировать файлы SWF в Flash позволяет извлечь некоторые ресурсы из SWF, но не все. swt "Шаблонные" формы файлов SWF, используемые Macromedia Generator. Это также расширение файла шаблона Flash от Adobe Dreamweaver. xfl XML-файлы проекта, эквивалентные двоичному формату FLA. Программное обеспечение для создания Flash использует XFL в качестве формата обмена в Flash CS4. Оно импортирует файлы XFL, экспортируемые из InDesign и After Effects. В Flash Pro CS5 файл XFL является ключевым файлом, который открывает "распакованный" файл FLA — иерархию папок, содержащих XML- и бинарные файлы.