Что такое код swf_shapefillbitmaptile

Содержание

swf_shapefillbitmaptile

swf_shapefillbitmaptile — Set current fill mode to tiled bitmap

Описание

Sets the fill to bitmap tile, empty spaces will be filled by the bitmap.

Список параметров

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Смотрите также

НОВОСТИ ФОРУМА
Рыцари теории эфира
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]69vJGqDENq4[/Youtube][/center]
[center]14:36[/center]
Osievskii Global News
29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Ok]376309070[/Ok][/center]
[center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
[center][Youtube]VVQv1EzDTtY[/Youtube][/center]
[center]10:43[/center]

интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/

[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]

Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html

[center][b]Сон разума народа России [/center]

Что такое код swf_shapefillbitmaptile

swf_shapefillbitmaptile — Set current fill mode to tiled bitmap

Description void swf_shapefillbitmaptile ( int bitmapid )

Sets the fill to bitmap tile, empty spaces will be filled by the bitmap given by the bitmapid parameter (tiled).

Пред. Начало След.
swf_shapefillbitmapclip Уровень выше swf_shapefilloff

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Применение атрибутов тега OBJECT и EMBED в Adobe Flash Professional

На этой странице

В этом документе перечислены атрибуты тегов OBJECT и EMBED, используемые для публикации содержимого SWF (с поддержкой возможностей Flash) на HTML-страницах для просмотра в веб-браузерах. Атрибуты позволяют задавать определенные параметры, которые определяют, как и где во Flash Player отображается файл SWF в браузере.

Информация о добавлении содержимого Flash (SWF-файла) на веб-страницы также доступна в технической заметке Синтаксис тега OBJECT | Flash (tn_4150).

Требуемые атрибуты

Следующие атрибуты внутри тегов OBJECT и EMBED требуются при добавлении файла SWF на HTML-страницу. При использовании команды «Опубликовать» в проигрывателе Flash Professional создаются файлы HTML с указанными требуемыми атрибутами.

Примечание. Значения в скобках и курсивом указывают на то, что значение выбирается разработчиком.

Требуется и для OBJECT, и для EMBED:

  • width — определяет ширину содержимого SWF в пикселях или в виде процентного значения для окна браузера.
  • height — определяет высоту содержимого SWF в пикселях или в виде процентного значения для окна браузера.

Требуется только для тега OBJECT:

  • classid — определяет элемент управления ActiveX для браузера. Пример правильного значения кода приведен в разделе Синтаксис тега OBJECT | Flash (tn_4150).
  • codebase — указывает местоположение элемента управления ActiveX проигрывателя Flash Player, благодаря чему браузер может автоматически загрузить его, если этот элемент управления не установлен на компьютере. Пример правильного значения кода приведен в разделе Синтаксис тега OBJECT | Flash (tn_4150).
  • movie (param) — определяет исходное местоположение (URL) загружаемого файла SWF.

Требуется только для тега EMBED

  • src — определяет исходное местоположение (URL) загружаемого файла SWF.
  • pluginspage — указывает на местоположение внешнего модуля Flash Player, что позволяет пользователю автоматически загрузить его, если модуль не установлен.

Дополнительные атрибуты

При определении тегов OBJECT и EMBED следующие атрибуты являются необязательными. Для тега OBJECT все атрибуты определяются тегами param , если не указано иное:

  • id (атрибут для тега OBJECT) и name (атрибут для тега EMBED) — идентификатор файла SWF. Определяет файл SWF для веб-браузера, благодаря чему в браузере создается сценарий языка (например, JavaScript) для ссылки на содержимое SWF. Чтобы обеспечить совместимость с несколькими браузерами, убедитесь в том, что для параметров id и name установлено одно и то же значение.
  • play — возможные значения: true, false. Указывает на то, будет ли SWF-файл, находящийся на панели «Временная шкала», воспроизводиться немедленно при загрузке содержимого в браузере. Если этот атрибут не указан, то значение по умолчанию — true.
  • loop — возможные значения: true, false. Указывает на то, будет ли SWF-файл, находящийся на панели «Временная шкала», воспроизводиться непрерывно или воспроизведение остановится по достижении последнего кадра. Если этот атрибут не указан, то значение по умолчанию — true.
  • menu — возможные значения: true, false. Определяет, доступны ли элементы управления воспроизведением в контекстном меню Flash Player.
    • true — отображается полное меню с элементами расширенного управления воспроизведением (например, «Масштаб», «Качество», «Воспроизведение», «Цикл», «Перемотка», «Вперед», «Назад»).
    • false — отображается меню, в котором элементы управления воспроизведением (например, «Масштаб», «Качество», «Воспроизведение», «Цикл», «Перемотка», «Вперед», «Назад») скрыты. Данный атрибут можно использовать для SWF-содержимого, не зависящего от панели «Временная шкала», например содержимого, полностью контролируемого языком ActionScript. В коротком меню отображаются элементы «Настройки» и «О программе Flash Player».
  • quality — возможные значения: low, autolow, autohigh, medium, high, best. Определяет качество визуализации рабочей области в отображаемом списке. Если задать свойство Stage.quality с помощью ActionScript, это значение переопределяется.
    • low — поддерживает скорость воспроизведения за счет внешнего вида и не использует сглаживание.
    • autolow — поддерживает скорость, но по возможности улучшает внешний вид. Воспроизведение начинается с отключенным сглаживанием. Если Flash Player обнаружил, что процессор способен выполнять сглаживание, то оно будет включено автоматически.
    • autohigh — поддерживает в равной степени скорость и внешний вид, но при необходимости предпочтение отдается скорости воспроизведения. Воспроизведение начинается с включенным сглаживанием. Если действительная частота кадров падает ниже заданной, сглаживание отключается, чтобы повысить скорость воспроизведения. Используйте этот параметр, чтобы сымитировать настройку «Просмотр» > «Сглаживание» во Flash Professional.
    • medium — применяет некоторое сглаживание, но смягчает растровые изображения. Этот параметр дает качество выше, чем в режиме «Низкое», но ниже, чем в режиме «Высокое».
    • high — поддерживает внешний вид за счет скорости воспроизведения и всегда использует сглаживание. Если фильм не содержит анимации, то растровые изображения смягчаются. В противном случае растровые изображения не смягчаются.
    • best — обеспечивает самое высокое качество отображения, даже за счет скорости. Сглаживается весь вывод, и все растровые изображения смягчаются.
  • scale — возможные значения: showall, noborder, exactfit, noscale. Определяет, как SWF-содержимое масштабируется во Flash Player по размеру области пикселей, определенной тегом OBJECT или EMBED.
    • default — («Показать все») отображает все содержимое SWF-файла в заданной области без искажений, сохраняя исходное соотношение сторон фильма. С двух сторон от фильма могут появиться поля.
    • noborder масштабирует SWF-файл, чтобы заполнить заданную область, сохраняя исходное соотношение сторон фильма. Flash Player позволяет обрезать содержимое, не применяя искажения.
    • exactfit — отображает все содержимое SWF-файла в заданной области без искажений, не сохраняя исходного соотношения сторон. Может возникнуть искажение изображения.
    • noscale предотвращает масштабирование SWF-файла, чтобы вписать область тега OBJECT или EMBED. Может быть выполнена обрезка.
  • align (атрибут для тега Object) — возможные значения: l, t, r.
    • По умолчанию центрирует содержимое в окне браузера и обрезает края, если оно меньше окна с фильмом.
    • l (left — по левому краю), r (right — по правому краю) и t (top — по верхнему краю): выравнивает фильм по соответствующему краю окна браузера и при необходимости обрезает оставшиеся три стороны.
  • salign — возможные значения: l, t, r, tl и tr.
    • l , r и t : выравнивает фильм по левому, правому или верхнему краю окна браузера и по необходимости обрезает оставшиеся три стороны.
    • tl и tr : выравнивает фильм по верхнему левому и верхнему правому углам окна браузера, обрезает низ и, по необходимости, оставшиеся стороны.
  • wmode — возможные значения: window, direct, opaque, transparent, gpu. Устанавливает для свойства «Режим окна» значение «Прозрачность», «Слои», «Положение» и «Ренденриг» для файла SWF в браузере. Если этот атрибут не указан, то значение по умолчанию — window. Подробности приведены в разделе Использование значений «Режим окна» (wmode) ниже.
    • window — содержимое SWF воспроизводится на веб-странице в пределах собственного прямоугольника (окна). Браузер определяет слои содержимого SWF по отношению к другим элементам HTML. С таким значением невозможно ясно указать, где находится содержимое SWF на странице — над или под другими элементами HTML.
    • direct — это значение используется для рендеринга пути. Этот атрибут позволяет обойти композицию в буфере экрана и вывести содержимое SWF напрямую на экран. Значение wmode рекомендуется использовать, чтобы оптимизировать воспроизведение содержимого. Оно обеспечивает отображение SWF-содержимого с аппаратным ускорением, для которого используется Stage V >opaque — SWF-содержимое выстраивается по слоям вместе с другими элементами HTML на странице. Файл SWF непрозрачный, он скрывает все многослойное содержимое, находящееся под ним на странице. Этот параметр уменьшает производительность воспроизведения по сравнению с параметрами wmode=window или wmode=direct .
    • transparent — SWF-содержимое выстраивается по слоям вместе с другими элементами HTML на странице. Цвет фона SWF-файла (цвет рабочей области) становится прозрачным. Элементы HTML, расположенные под SWF-файлом, видно через любые прозрачные области файла SWF с наложением альфа-канала. Этот параметр уменьшает производительность воспроизведения по сравнению с параметрами wmode=window или wmode=direct .
    • gpu — можно использовать дополнительное аппаратное ускорение на некоторых мобильных устройствах и телевизорах, подключенных к Интернету. В отличие от других значений wmode не гарантируется четкое отображение пикселов в отображаемом списке графики. В противном случае это значение аналогично wmode=direct .
  • bgcolor[шестнадцатеричное значение RGB] в формате #RRGGBB. Определяет цвет фона для содержимого SWF-файла. Этот атрибут используется, чтобы переопределить параметр цвета фона (цвета рабочей области), определенный в файле SWF. (Не влияет на цвет фона HTML-страницы.)
  • base[базовый каталог] или [URL]. Задает базовый каталог или URL-адрес для разрешения относительных путей в SWF-файле. Этот атрибут может оказаться полезным в тех случаях, когда SWF-файл хранится в другом каталоге, отдельно от остальных файлов.
  • allowFullScreen — возможные значения: true и false. Выбрав значение true для этого параметра, можно просматривать SWF-файл в режиме полного экрана посредством ActionScript. Дополнительная информация об этом приведена в разделе Знакомство с режимом полного экрана в проигрывателе Flash Player. Если этот атрибут не указан, то значение по умолчанию — false .
  • fullScreenAspectRatio — возможные значения: portrait и landscape. Используется для управления полноэкранным отображением SWF-содержимого на мобильных устройствах, поддерживающих автоматический поворот экрана, таких как телефоны и планшеты. Если этот атрибут определен, при просмотре SWF-файла в полноэкранном режиме в проигрывателе Flash Player используется указанная ориентация экрана (книжная или альбомная). Ориентация устройства не имеет значения. Если этот атрибут не определен, то ориентация содержимого полностью соответствует ориентации экрана в браузере.
  • flashvars — переменные, определенные в виде строки пар key=value, которые передаются в файл SWF.
    • С помощью flashvars можно определить в SWF-файле переменные корневого уровня. Формат строки представляет собой набор комбинаций key=value, которые разделены символом «&».
    • Браузеры поддерживают строки длиной до 64 кб (65 535 байт).
    • Дополнительная информация об использовании flashvars приведена в разделе Использование FlashVars для передачи переменных в файл SWF (tn_16417).
  • browserzoom — следующие теги OBJECT и EMBED доступны во Flash Player для изменения размера содержимого Flash в ответ на изменение коэффициента масштабирования в браузере:
    • scale : включение коэффициента масштабирования в браузере
    • noscale : отключение коэффициента масштабирования в браузере

Использование значений «Режим окна» (wmode)

Разработчики могут установить свойство wmode («Режим окна») для содержимого SWF, чтобы контролировать слои и прозрачность содержимого в браузере. Вне зависимости от значения атрибута wmode во Flash Player отображается содержимое, просматриваемое в полноэкранном режиме при использовании прямого рендеринга пути. С помощью прямого рендеринга пути можно задействовать возможности представления с аппаратным ускорением, например Stage Video и Stage3D.

Чтобы обеспечить самое высокое качество воспроизведения содержимого Flash в браузере, используйте атрибут wmode=direct . С помощью этого атрибута можно задействовать возможности представления с аппаратным ускорением, в том числе Stage Video и Stage3D. Избегайте перекрывания областей SWF с элементами HTML (например, всплывающими меню на основе HTML), которые должны отображаться над SWF-файлом. Точный контроль слоев поддерживается только в некоторых современных браузерах (см. таблицу ниже). В других браузерах содержимое SWF всегда отображается над другими элементами HTML.

Если требуется более точное управление расположением слоев, прозрачностью или элементами HTML, отображаемыми над содержимым SWF, используйте атрибут wmode=opaque или wmode=transparent . Затем с помощью HTML можно управлять расположением слоев по отношению к другим элементам на странице. Однако при использовании этих режимов «без окон» уменьшается качество воспроизведения по сравнению с использованием атрибутов wmode=window (по умолчанию) и wmode=direct .

Способы вставки Flash в HTML и XHTML

«Как правильно вставить объекты Flash в вашу HTML-страницу?»

Это должно быть простой вопрос, но вероятно вызывает множество споров, так как каждый из доступных способов встраивания объектов имеет свои преимущества и недостатки. В этой статье мы исследуем трудности и тонкости встраивания Flash-содержимого и рассмотрим наиболее популярные способы вставки объектов.

Основные компоненты метода встраивания Flash-объектов

Прежде чем перейти к практике, давайте сначала охарактеризуем идеальный метод. По моему мнению, следующие критерии имеют первостепенное значение.

Соответствие стандартам

Web-стандарты предлагают универсальный язык для создателей браузеров, проектировщиков оборудования и веб-дизайнеров для того, чтобы они могли избежать проблем совместимости, зависимости от производителей, а также нарушения патентных прав. Кроме того веб-стандарты позволяют создавать правильную HTML-разметку, которая к тому же часто является требованием в веб-проектах.

Межбраузерная поддержка

Поддержка всеми основными браузерами и популярными операционными системами — это необходимое условие. Проверить разметку можно с помощью инструментария Flash embed test suite, который позволяет оценить, поддерживают ли браузеры тот или иной метод разметки, с помощью которой можно вставить Flash-объекты. Этот набор тестов может показать информацию о параметрах, в том числе различных настройках Flash, потоках и сценариях, поддерживаемых браузерами и ОС. Вы также можете изучить сводную таблицу, отображающую эти параметры.

Поддержка альтернативного содержимого

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

Избежание несоответствия между Flash-контентом и версией Flash-плеера

К сожалению для многих из нас, Flash-контент будет воспроизводиться вне зависимости от версии Flash-плеера, для которого он был создан. В этом нет ничего страшного до того момента, пока устаревший плагин не обнаружит функции, которые работают только в его более поздних версиях. Если так произойдет, ваши посетители увидят «нарушенное» содержимое или вовсе ничего не увидят.

Автоактивация интерактивного контента

Браузеры компании Microsoft работают так, что посетители не могут напрямую взаимодействовать с элементами управления Microsoft ActiveX, который позволяет загружать объекты и элементы embed , также называемые «интерактивным контентом».

Короче говоря, браузеры Microsoft не позволят взаимодействовать с интерактивным контентом, пока пользователь самостоятельно его не активирует. Opera также внедрила похожий механизм «click-to-activate». Этот механизм работает как «лежачий полицейский» на дороге: вы должны приостановить движение, медленно переехать через него, и только потом нажать педаль газа. Это может запутать обычного интернет-серфера и разозлить даже самого опытного.

Простота реализации

Конечно же простота имеет значение. Зачем прыгать выше головы, если можно сделать проще?

Основы встраивания Flash-объектов: embed и object

Существуют два элемента HTML, которые позволяют вставить объекты Flash на веб-страницу. В одной руке, у нас есть запатентованный элемент embed , который поддерживается большинством браузеров:

В другой руке у нас элемент object , который является рекомендацией W3C. Так как спецификации W3C предоставляют больше возможностей для отображения подключаемого контента, со временем появились два различных способа реализации объектов.

Большинство современных браузеров выбрали стандартом альтернативу тегу embed , используя при этом MIME-тип объекта, чтобы подключить соответствующий плагин для воспроизведения содержимого:

Этот метод не привязан к какому-либо определенному браузеру и поэтому это предпочтительная реализация.

Второй способ реализации создан специально для Internet Explorer на Windows. При этом требуется, чтобы вы определили атрибут classid у объекта, чтобы браузер смог загрузить необходимый элемент управления ActiveX Flash-плеера. Такой способ допустим, но зависим от типа браузера:

Замечание: В двух последних примерах кода специально не указан параметр codebase — он часто используется, чтобы уточнить URL инсталлятора Flash на серверах Adobe (браузер может автоматически загрузить его, если он еще не установлен). Однако это запрещено согласно спецификациям, которые ограничивают его доступ только в пределах домена текущего документа, и поэтому этот параметр не поддерживается всеми современными браузерами.

Почему embed все еще используется

С появлением веб-стандартов можно было бы совершенно обоснованно удалить элемент embed . Он просто никогда не был рекомендацией W3C и никогда не будет, потому что он уже запатентован. Однако в действительности этот способ лучше поддерживается браузерами, чем отдельная реализация элемента object . В результате такой способ реализации выбран на большинстве веб-сайтов, таких как Google Video и Brightcove.

Хотя веб-стандарты созданы, чтобы избежать проблем совместимости, элемент embed более ясен и недвусмыслен, чем элемент object , одобренный W3C. Жесткие правила реализации элемента embed и хорошая поддержка превратила его в фактический стандарт, который будет использоваться до тех пор, пока не будет универсальной поддержки элемента object , достаточной для того, чтобы игнорировать версии браузеров, которые его не поддерживают.

Где нарушена поддержка веб-стандартов

Двойственная реализация элемента object формально не нарушает веб-стандарты, но создает множество проблем. Следовательно, нам нужно найти способ объединить два метода реализации объектов в один. Еще хуже то, что мы также должны разобраться с браузерами, которые имеют (или раньше имели) неправильную реализацию объектов. Давайте рассмотрим эти проблемы:

  • Общая реализация объектов не работает в Internet Explorer на Windows. IE загружает плагин и SWF-файл, но не показывает его содержимое.
  • Когда мы частично объединяем два способа реализации добавлением параметра movie к общей реализации, Internet Explorer отображает Flash-контент, но не проигрывает его.
  • Если мы полностью соединим две реализации, все заработает в Internet Explorer, но браузеры на базе Gecko проигнорируют Flash-контент и покажут альтернативное содержимое.

Одной из особенностей элемента object является то, что вы можете вставлять этот тег друг в друга:

К сожалению, из-за ошибки в старых версиях Internet Explorer встроенные друг в друга элементы object рассматриваются так, как будто они следуют один за другим, поэтому отображаются оба элемента.

Еще хуже то, что браузеры Safari, начиная с версии 1.2.2 для Mac OS 10.3, игнорируют элемент param , встроенный в object , хотя поддерживают такие же атрибуты для элемента embed .

Замечание: Вы также можете спросить, насколько разумно определять контент, атрибуты и параметры дважды, как в вышеизложенном способе. Этот комбинированный метод также делает более проблематичным использование JavaScript для взаимодействия с Flash-контентом. В таком случае вы должны проверять, с каким объектом вы взаимодействуете.

Некоторые из ошибок уже исправлены, но необщепринятая и ошибочная в Internet Explorer реализация object все еще сдерживает абсолютное принятие этого элемента. Мы можем только надеяться, что это будет исправлено в ближайшем будущем.

Почему object лучше, чем embed

Несмотря на отсутствие поддержки всеми браузерами элемент object все же более предпочтителен, чем элемент embed , потому что кроме соответствия стандартам, он также обладает превосходной поддержкой альтернативного содержимого.

Элемент object позволяет встраивать альтернативное содержимое, и это содержимое отображается, если реализация не поддерживается или не установлен плагин. Также альтернативное содержимое доступно поисковым машинам, а это неоспоримый плюс при оптимизации под поисковые запросы.

Элемент embed поддерживает альтернативное содержимое посредством элемента noembed , но такая реализация работает только в тех браузерах, которые не поддерживают сам элемент embed , например Internet Explorer на платформах Windows Mobile. В отличие от элемента object , embed не поддерживает альтернативное содержимое, когда поддерживается сам элемент embed , но не установлен Flash-плагин. В такой ситуации, можно довольствоваться только атрибутами pluginurl и pluginspage , с помощью которых отображается картинка, кликнув по которой можно установить плагин.

Я думаю, это лучшее решение для отображения альтернативного контента, чтобы описать необходимый плагин и дать намек на то, что пользователь может загрузить и установить плагин Flash. (Тем не менее, нет других причин, по которым мы должны злоупотреблять атрибутом codebase .)

Таким образом, элемент object обладает значительными преимуществами перед элементом embed в том случае, если вы предпочитаете создавать соответствующий стандартам код или доступное, хорошо индексируемое поисковиками содержимое.

Недостаточность методов разметки

Принимая во внимание критерии, определенные нами ранее, — соответствие стандартам, межбраузерную поддержку, поддержку альтернативного содержимого, избежание несоответствий плейер/контент, автоконтроль интерактивного содержимого и простоту реализации — легко понять, что в действительности используются лишь те способы реализации, которые могут быть осуществлены только изменением разметки.

Хотя разметка предоставляет средства показа Flash-контента или альтернативного содержимого, она не способна решить проблемы несоответствия контента и плагина Flash или ошибки при активизации интерактивного контента, и это не всегда самый простой способ решить и ту, и другую проблему.

Однако, давайте сделаем краткий обзор наиболее популярных «комбинированных» методов встранивания Flash, осуществляемых с помощью (X)HTML-разметки.

Двусоставный метод

В Flash IDE, вы можете создавать HTML-страницы с помощью так называемого двусоставного метода, объединяющего реализацию объектов с помощью элемента object и embed , встроенного внутри него как альтернативный контент:

Как видите, этот метод основан исключительно на запатентованной разметке. Он несомненно фокусируется на межбраузерной поддержке, но не соответствует стандартам.

Двусоставный метод использует избыточный код, делает ваши веб-страницы логически непоследовательными и не позволяет вставить альтернативное содержимое. А единственная преимущество — это простота в использовании, так как его генерирует Flash IDE: так что не пытайтесь просить воспроизвести этот метод по памяти.

Метод вложенных объектов

Вложение двух реализаций объектов — хорошая альтернатива двусоставному методу, потому что этот метод соответствует стандартам и поддерживает альтернативный контент:

К сожалению, в этом методе отсутствует межбраузерная поддержка вследствие ошибки вложения элементов object в IE и отсутствия поддержки вложенных элементов param в Safari. Но можно использовать прием с условными комментариями IE, чтобы избежать ошибок браузера:

При использовании приведенного выше «раздутого» кода, этот метод становится даже более сложным для создателя, чем двусоставный. Он использует безобразные уловки, которые могут усложнить процесс создания кода при использовании серверных языков.

Flash Satay

Другая альтернатива — это метод Flash Satay, который основан на общем способе реализации объектов и включает дополнительный параметр movie . Этот параметр необходим, чтобы избежать ошибок отображения контента в IE. Он также включает movie-контейнер Flash (c.swf с переменной path), чтобы исправить ошибку с потоковым воспроизведением в IE:

Хотя он приближает нас к «идеальному», универсальному способу реализации объектов, Flash Satay содержит приемы, применение которых не подойдет каждому? и при использовании этого метода встроенные элементы param не поддерживаются старыми версиями Safari.

Аргументы в пользу DOM

Когда вы думаете о недостаточности методов разметки, вы можете поинтересоваться, почему нельзя использовать скрипты DOM. С помощью них, мы можем динамически управлять разметкой, как того требует каждый браузер, используя:

  • специальную реализацию для IE;
  • запатентованный элемент embed для старых версий Safari;
  • общую реализацию для всех остальных браузеров.

Скрипт DOM к тому же гибкий инструмент, достаточный для решения остальных проблем: прежде всего, мы можем использовать его для решения проблемы несовместимости Flash-плейера и Flash-контента, определяя версию плагина и проверяя то, что нужно показывать — Flash-контент или альтернативное содержимое. Когда необходимая версия плагина недоступна, мы можем инициировать экспресс-установку Adobe, — механизм встроенный в Flash-плейер. Тем самым мы упрощаем загрузку нужной версии.

Решение с применением DOM также позволяет нам избежать механизма «click-to-activate» с помощью динамического создания элементов object .

Будьте осторожны, используя JavaScript

Так как не каждый является опытным специалистом по JavaScript — да и даже тот, кто им является, не должен заново изобретать велосипед — неплохо использовать уже существующие библиотеки JavaScript для встраивания Flash. Давайте рассмотрим критерии выбора надежной библиотеки.

Разметка по стандартам редко поддерживается создателями библиотек, так как эти библиотеки определяют Flash-контент либо в JavaScript, либо другими средствами разработки. Большинство библиотек создают неправильный HTML и, так как разметка написана динамически, W3C-валидатор не способен её проверить.

С другой стороны нужно рассмотреть, как работает такой метод, если JavaScript не доступен, не поддерживается или поддерживается только отчасти. Что делать, если используя JavaScript, вы ограничиваете доступность контента для пользователей?

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

Комплект по определению плейера Adobe Flash

Кроме создания разметки в Flash IDE, Adobe также предоставляет комплект по определению плейера Flash. Существует три способа использовать этот комплект:

  1. Проверив установлен или нет флажок Detect Flash Version (в меню File > Publish Settings > HTML) в Flash 8 IDE.
  2. Вставив его вручную, загрузив дистрибутив этой библиотеки.
  3. Работать в Flex Builder 2, где он включен по умолчанию.

Хотя пакет дает нам все желаемые возможности, такие как определение версии, экспресс-установка и автоактивация интерактивного контента, он нуждается в усовершенствовании. Когда мы полностью перейдем к стандартам, его ждет безнадежный провал: пока что он основан на двусоставной разметке, так как имеет либо реализацию объектов от Microsoft, либо поддержку запатентованного элемента embed , не соответствующего стандартам.

Он также поддерживает альтернативный контент, хотя странным и противоречивым образом. Вы должны определить альтернативный контент дважды: в JavaScript и в элементе noscript .

В конечном счете, комплект по определению плейера нуждается в лучшей реализации.

UFO и SWF Object

Популярные альтернативы с открытым исходным кодом, как UFO Боба ван дер Слуиса и SWF Object Джеффа Стирнса наверное самые полные и простые в использовании библиотеки, доступные в настоящее время.

Хотя на первый взгляд они кажутся похожими, они полностью отличаются внутренним содержанием. Например, SWF Object использует двусоставный метод Adobe, в то время как UFO генерирует главным образом соответствующую стандартам разметку. С другой стороны они используют общие архитектурные принципы: обе библиотеки построены на идее создания разметки, поддерживающей альтернативное содержимое (таким образом доступное и оптимизированное под поисковики), которое замещается DOM-скриптом, когда доступна необходимая поддержка Flash и JavaScript.

Несмотря на их явную поддержку альтернативного содержимого, обе библиотеки имеют один существенный недостаток: они зависят от JavaScript при вставке Flash-контента. В результате небольшая группа посетителей, установившая Flash плагин, но с отключенным JavaScript или с отсутствием достаточной поддержки JavaScript, будут видеть только альтернативное содержимое.

Аргументы в пользу «умеренного» программирования DOM

Чтобы решить все проблемы, вполне логично использовать следующий метод вставки: смешанную разметку, совместимую со стандартами, как та, которая используется методом Flash Satay, чтобы включить и Flash-контент, и альтернативное содержимое, наряду с применением небольшого DOM-скрипта, который необходим для устранения проблем в некоторых браузерах.

ObjectSwap основан на этих принципах и на мой взгляд является образцом для будущих библиотек встраивания Flash-объектов. К сожалению, ObjectSwap концентрируется в основном на автоактивации интерактивного контента, поэтому он не пригоден для определения версии и не решает проблем с разметкой, таких как поддержка потокового воспроизведения в IE или поддержка параметров в старых версиях Safari.

С другой стороны он может быть усовершенствован. При использовании события onload , поведение, основанное на DOM, реализуется только после загрузки всей страницы. Лучшим выбором могло бы быть событие DOMContentLoaded , которое позволяет вам применить свое собственное поведение, как только DOM станет доступен на странице. Так как событие DOMContentLoaded еще не полностью поддерживается браузерами, взамен этого вы можете использовать это решение.

Будущее встраивания Flash

Хотя совершенное решение пока еще не найдено, мы уже довольно далеко продвинулись в правильном направлении. Когда мы соединяем лучшие возможности различных библиотек, нам следует учитывать все критерии, определенные в начале этой статьи.

Как уменьшить размер файлов SWF, оптимизируя код?

Учитывая, мы уже сделали следующие действия:

  • Flex Framework как RSL
  • Компиляции с отладочным = ложными
  • Загрузка большинство изображений во время выполнения
  • чертежа других простых изображений с флэш-дро особенности
  • Сокращение сложных изображений с помощью pngquant
  • Создание модулей для дополнительных функций
  • Применения диапазонов шрифтов
  • Идущих FlexPMD найти мертвый код и плохие копировать-вставить
  • Запуск FlashOptimizer и secureSWF (с плохими результатами)

Сегодня наше приложение 1358k:

  • код : 978k — 72%
  • изображения: 270k — 20%
  • шрифты: 110k — 8%

Мы считаем, что мы потратили много времени на оптимизацию активов, и большая часть работы остается на коде. Анализируя наш отчет о ссылках, мы предполагаем, что большая часть кода связана с вложенными компонентами Flex .mxml. Мы не думаем, что на наших чистых AS-классах многое можно сделать.

Есть ли какой-либо анализ или кодирование наилучшей практики, чтобы уменьшить влияние кода на файл swf?

Создан 26 янв. 11 2011-01-26 17:52:00 Cyno

Вы экспортировали сборку выпуска или сравниваете сборку отладки? – JeffryHouser 26 янв. 11 2011-01-26 18:30:11

Конечно, выпуск build – Cyno 27 янв. 11 2011-01-27 13:10:12

3 ответа

У вас есть объекты в .mxml, которые похожи друг на друга, что вы могли бы превратиться в общий класс и настроить программно?

Создан 26 янв. 11 2011-01-26 18:00:51 Joseph Le Brech

У нас есть много настраиваемых компонентов, которые наследуются от основных компонентов Flex (Canvas, Box, Image, List и т. Д.). Я не уверен, что это принесет пользу окончательному размеру кода. Когда вы вставляете Button или CustomizedButton (inhereting Button) в .mxml, изменяется ли окончательный размер кода? Вот почему я спрашивал о глубоком анализе и лучшей практике. – Cyno 27 янв. 11 2011-01-27 13:26:42

Рассмотрите возможность использования в предварительных загрузчиках и модулях.

Не зная вашего приложения, трудно быть конкретным, но custom preloader может иногда помочь с ожидаемым временем загрузки. Давайте посмотрим правде в глаза, попросив пользователя спокойно смотреть на индикатор прогресса, это печально, и вы можете сделать лучше.

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

Недостаток: ваш код предварительного разгрузки не имеет доступа ко всем свойствам Flex. Вам нужно будет нарисовать свой интерфейс и реализовать свое взаимодействие в простой старой AS3. Тем не менее, дополнительная работа может стоить того и в некоторых ситуациях.

Flex-модули — это еще одна вещь, на которую стоит обратить внимание. В сложном приложении Flex не все обычно используется.Если вы вырезаете менее используемые биты из основного приложения и переместите их в module you load on-demand, вы сможете сэкономить достаточное количество байтов от первоначального размера загрузки.

Создан 26 янв. 11 2011-01-26 18:27:30 Metal

У нас есть предварительный загрузчик в простой AS3, который обрабатывает основные задачи (тесты среды, безопасность, загрузка основного приложения monitore). К сожалению, большинство пользователей переходят непосредственно в основное приложение, где используется большая часть кода. Как я уже упоминал в вопросе, мы уже создали модули для вторичных функций. – Cyno 27 янв. 11 2011-01-27 13:19:32

Я обновил вопрос, чтобы добавить ссылку, показывающую, как люди обращаются к приложению. – Cyno 27 янв. 11 2011-01-27 13:33:35

В моей практике у меня обычно нет больших окончательных swf-файлов, поэтому я хочу упомянуть только одно. Использование mxmlc напрямую мы не должны забывать, чтобы добавить (для окончательной сборки, конечно), параметр/атрибут

другим способом окончательные швейцарские франки будут почти в 2 раза больше ,

Создан 27 янв. 11 2011-01-27 00:20:02 igor milla

Скомпилируем с debug = false, я обновил вопрос, чтобы упомянуть об этом. – Cyno 27 янв. 11 2011-01-27 13:13:51

Как уменьшить размер файлов SWF, оптимизируя код?

  • Flex Framework как RSL
  • Компиляции с отладочным = ложными
  • Загрузка большинство изображений во время выполнения
  • чертежа других простых изображений с флэш-дро особенности
  • Сокращение сложных изображений с помощью pngquant
  • Создание модулей для дополнительных функций
  • Применения диапазонов шрифтов
  • Идущих FlexPMD найти мертвый код и плохие копировать-вставить
  • Запуск FlashOptimizer и secureSWF (с плохими результатами)

Сегодня наше приложение 1358k:

  • код : 978k — 72%
  • изображения: 270k — 20%
  • шрифты: 110k — 8%

Мы считаем, что мы потратили много времени на оптимизацию активов, и большая часть работы остается на коде. Анализируя наш отчет о ссылках, мы предполагаем, что большая часть кода связана с вложенными компонентами Flex .mxml. Мы не думаем, что на наших чистых AS-классах многое можно сделать.

Есть ли какой-либо анализ или кодирование наилучшей практики, чтобы уменьшить влияние кода на файл swf?

Вы экспортировали сборку выпуска или сравниваете сборку отладки? – JeffryHouser

ответ

У вас есть объекты в .mxml, которые похожи друг на друга, что вы могли бы превратиться в общий класс и настроить программно?

У нас есть много настраиваемых компонентов, которые наследуются от основных компонентов Flex (Canvas, Box, Image, List и т. Д.). Я не уверен, что это принесет пользу окончательному размеру кода. Когда вы вставляете Button или CustomizedButton (inhereting Button) в .mxml, изменяется ли окончательный размер кода? Вот почему я спрашивал о глубоком анализе и лучшей практике. – Cyno

Рассмотрите возможность использования в предварительных загрузчиках и модулях.

Не зная вашего приложения, трудно быть конкретным, но custom preloader может иногда помочь с ожидаемым временем загрузки. Давайте посмотрим правде в глаза, попросив пользователя спокойно смотреть на индикатор прогресса, это печально, и вы можете сделать лучше.

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

Недостаток: ваш код предварительного разгрузки не имеет доступа ко всем свойствам Flex. Вам нужно будет нарисовать свой интерфейс и реализовать свое взаимодействие в простой старой AS3. Тем не менее, дополнительная работа может стоить того и в некоторых ситуациях.

Flex-модули — это еще одна вещь, на которую стоит обратить внимание. В сложном приложении Flex не все обычно используется.Если вы вырезаете менее используемые биты из основного приложения и переместите их в module you load on-demand, вы сможете сэкономить достаточное количество байтов от первоначального размера загрузки.

У нас есть предварительный загрузчик в простой AS3, который обрабатывает основные задачи (тесты среды, безопасность, загрузка основного приложения monitore). К сожалению, большинство пользователей переходят непосредственно в основное приложение, где используется большая часть кода. Как я уже упоминал в вопросе, мы уже создали модули для вторичных функций. – Cyno

Я обновил вопрос, чтобы добавить ссылку, показывающую, как люди обращаются к приложению. – Cyno

В моей практике у меня обычно нет больших окончательных swf-файлов, поэтому я хочу упомянуть только одно. Использование mxmlc напрямую мы не должны забывать, чтобы добавить (для окончательной сборки, конечно), параметр/атрибут

другим способом окончательные швейцарские франки будут почти в 2 раза больше ,

Как уменьшить размер файлов SWF, оптимизируя код?

Учитывая, что мы уже сделали следующие действия:

  • Flex Framework как RSL
  • Компиляция с debug = false
  • Загрузка большинства изображений во время выполнения
  • Рисование других простых изображений с функциями рисования флэш-памяти
  • Уменьшение сложных изображений с помощью pngquant
  • Создание модулей для дополнительных функций
  • Применение диапазонов к шрифтам
  • Запуск FlexPMD для поиска мертвого кода и плотной копии-вставки
  • Запуск FlashOptimizer и secureSWF (с плохими результатами)

Сегодня наше приложение — 1358k:

  • Код: 978k — 72%
  • Изображения: 270k — 20%
  • Шрифты: 110k — 8%

Мы полагаем, что мы потратили много времени на оптимизацию активов, и большая часть работы остается в коде. Анализируя наш отчет о ссылках, мы предполагаем, что тяжелая часть кода поступает из вложенных компонентов Flex .mxml. Мы не думаем, что на наших чистых AS-классах многое можно сделать.

Есть ли какой-либо анализ или кодирование лучшей практики, чтобы уменьшить влияние кода на файлы swf?

CODE STAGE

DEVELOPMENT & RESEARCH

Упакованный SWF. Как распаковать?

Привет, друзья!
В этом посте я хотел бы рассказать о том, что из себя представляет упакованный SWF и как его можно распаковать динамически и статически.

Итак, что же такое упакованный SWF?

Если Вы никогда ранее его не видели, не поленитесь скачать простой классический пример упакованного SWF:
http://codestage.ru/files/flood/security/packed.swf
Запустив SWF, вы увидите немного текста в левом верхнем углу. Однако, если вы попробуете декомпилировать этот файл, то вы не увидите кода, который этот текст показывает.
Стоит отметить, что если бы в упакованном SWF были ещё какие-нибудь ресурсы (изображения, звуки, шрифты и т.д.), то их вы бы тоже не увидели. Это из-за того, что оригинальный SWF находится внутри того SWF что вы скачали и декомпилировали, и часто в зашифрованном виде.
Обычно все, что вы можете получить из таких SWF с помощью декомпиляторов — это код распаковщика\расшифратора и, возможно, сам зашифрованный SWF в виде набора байт (зависит от того, умеет ли используемый вами декомпилятор отображать тэг DefineBinaryData).
Такая «упаковка» на самом деле достигается с помощью простого Flex тэга [Embed].

Динамическая распаковка (dumping)

Динамическая — значит для распаковки потребуется исполнение SWF во Flash Player’е (далее — FP).
Т.к. FP не умеет проигрывать зашифрованную неведомо как SWF, то логично что перед проигрыванием, SWF должна расшифровываться и загружаться уже в чистом виде (например, с помощью Loader.loadBytes() ).
Что более важно, распакованный и расшифрованный SWF будет в памяти все время, пока он исполняется FP’ром.

И это наш шанс достать его!
Существует два основных способа сделать это.

1) Динамическая распаковка с помощью утилит
Используя сторонние или даже самописные утилиты для поиска SWF в памяти процесса FP. Это самый быстрый, самый простой и обычно самый эффективный способ. Но он не вызывает ощущения что вы — тру крякер ��
Существуют различные платные и бесплатные утилиты для этих целей.
Одна из наиболее продвинутых — это SWF Revealer, бесплатная утилита для владельцев лицензий на ASV. В некоторых случаях, она может обходить проверки на домен (которые не дают распаковаться и расшифроваться SWFке) и заставлять SWF запускаться в вашей среде.
Также достаточно легко гуглятся разные бесплатные дамперы.

2) Ручная динамическая распаковка
Поиск SWFки вручную, с помощью нахождения CWS (сжатый SWF) или FWS (несжатый SWF) заголовков, которые являются началом любого SWF. Если вы никогда не пробовали такой способ, я очень рекомендую попробовать! Он не только позволит немного подтянуть ваши скиллы в hex, но и подарит вам ощущение, что вы тру-крякер!)
Для поиска заголовков можно использовать любой HEX редактор, который умеет читать память процессов и имеет функцию поиска.
Если вы хотите искать упакованный SWF в памяти FP в котором проигрывается файл-пример по ссылке выше, то стоит начать с поиска FWS подписи (несжатый SWF) — просто ищите строку ‘FWS’, т.к. перед исполнением FP разжимает SWF, если он был сжат.
Если вы будете запускать и искать SWF в браузере, то закройте все лишние вкладки, чтобы снизить количество лишних SWF в памяти.

Обычно при таком поиске вы найдете несколько заголовков в памяти, т.к. сам FP держит там разные служебные SWF, например ту, что показывается после входа в полноэкранный режим.
Так что если вы сомневаетесь, то лучше проверить все найденные заголовки.
Итак, что же делать с найденным заголовками, спросите вы? Как их проверить, как узнать, где заканчивается SWF?
Пожалуйста, взгляните на этот скриншот:

Это заголовок одной из SWF в памяти FP при проигрывании файла-примера, найденный поиском по строке ‘FWS’ (совершенно случайно это оказался заголовок искомого упакованного файла, который мы и хотим найти ;))
Что же дальше? А дальше необходимо посмотреть какой длины получается найденный SWF. Длина расположена в 4 байтах начиная с 4го:

Как я узнал? Я просто прочитал спецификацию формата SWF: «SWF File Format Specification» http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf (раздел «The SWF header»)
Т.к. это шестнадцатеричное число, записанное в память, вам стоит знать, что порядок записи его байт — справа налево. Поэтому в результате число такое:
00 00 04 DB в hex и 1243 десятичном представлении.
Теперь отмеряем эти 1243 байт начиная с FWS подписи.
Т.к. подпись начинается на 053DD020, окончание SWF файла должно находиться по адресу 053DD4FB (053DD020 + 4DB):

Пожалуйста, имейте ввиду, что адрес расположения SWF в памяти будет отличаться на разных ОС и на разном железе.

Итак, мы видим, что найденный SWF действительно заканчивается на 053DD4FB, так что мы можем смело выделить все байты начиная с 053DD020, заканчивая 053DD4FB и скопировать их в новый SWF файл.
После проделывания этой операции со всеми вхождениями FWS, которые вам покажутся подходящими, среди сохраненных SWF файлов будет один искомый, распакованный SWF!
Теперь у вас не должно возникнуть проблем с его декомпиляцией.

Некоторые виды пакеров усложняют поиск искомого SWF с помощью размещения множества фальшивых FWS заголовков в памяти. Так что вам следует более тщательно подбирать FWS — проверять его длину, и то как он в целом выглядит. Опытные в реверсинге люди (вроде меня :p) могут на глаз отличить фальшивый заголовок от настоящего, глянув на сам заголовок и на несколько десятков байт после него.

Иногда, упакованный SWF может не распаковываться в память до проверки каких-нибудь условий. Например, загрузчик может проверять текущий домен или наличие какого-нибудь файла с лицензией. В таком случае вам придётся пропатчить эти проверки (например, с помощью дизассемблеров байткода, таких как Yogda или RABCDasm) или предоставить необходимые файлы (в которых может находиться ключ для расшифровки), чтобы заставить SWF запуститься и распаковаться.

Статическая распаковка

Статическая — значит без запуска SWF во FP.
В целом, к этому типу распаковки прибегают когда не вышло распаковать SWF динамически (кто его знает, почему у вас не получилось запустить SWF?)
Статическая распаковка может быть очень сложной задачей, т.к. есть не один способ её усложнить и сделать мучительно долгой.

Итак, с чего начать при статической распаковке? Для начала, вам следует получить доступ как минимум к двум вещам в SWF:
1 — DefineBinaryData тэг(и).
2 — Декомпилированный AS или abc байткод распаковщика\загрузчика.
Также, в некоторых случаях понадобится
3 — SymbolClass тэг
Для этого используйте доступные утилиты (ASV, Adobe SWF Investigator, SWiX, и т.д.).

Как найти тэг DefineBinaryData в SWF?
Сначала отмечу, что некоторые утилиты, например, ASV, могут вам явно указать на наличие этого тэга, сразу после открытия SWF. В них же можно этот тэг сохранить в виде двоичного файла.
Также можно найти его вручную, с помощью различных инспекторов тэгов, вроде упомянутого выше Adobe SWF Investigator.
Для получения содержимого тэга DefineBinaryData из файла-примера с помощью Adobe SWF Investigator, просто откройте файл, перейдите на вкладку Tag Viewer, выберите тэг DefineBinaryData и нажмите на кнопку Dump To File.

Иногда в этом списке тэгов может быть множество фальшивых, чтобы сбить с толку незадачливого крякера. Для поиска необходимого тэга придётся немного изучить код загрузчика\распаковщика и отследить там обращение к упакованным данным.
Обычно оно выглядит так:

Где SomeClass имеет тип Class и наследуется от класса ByteArrayAsset.

Давайте посмотрим в код загрузчика и поищем что-то похожее.
Ага, вот и оно!

Теперь нам следует поискать класс с именем оканчивающимся на «_content» и наследующийся от ByteArrayAsset.
А вот и он:

Чтобы выяснить, какой тэг DefineBinaryData связан с этим классом, нам следует заглянуть в тэг SymbolClass и поискать там запись с названием найденного класса «MainTimeline_focus_loader_content».
В нашем случае эта запись выглядит так (в Adobe SWF Investigator):

Запомните значение поля idref. Это id нужного тэга DefineBinaryData!
Теперь ищите тэг с таким id среди всех тэгов DefineBinaryData.
После того, как вы его найдёте, его можно сохранить в файл и продолжать распаковку.
Почему я попросил запомнить idref, а не название класса? Потому что в том случае, если AS распаковщика обфусцирован, работать с именами классов может быть очень затруднительно.

Теперь успех вашего мероприятия зависит от количества времени, которое вы готовы потратить, сложности упаковщика и удачи)
Если повезёт, то полученные из DefineBinaryData данные окажутся чистым SWF без какого-либо шифрования и распаковку можно считать оконченной.
Но чаще всего, на этом этапе все самое интересное только начинается и впереди реверсинг загрузчика — разбор алгоритмов шифрования и написания собственного дешифровщика.

В нашем случае, код загрузчика намеренно сделан максимально простым и не обфусцированным, так что на этот раз нам повезло — мы легко находим функцию расшифровки:

И узнаем, что для получения оригинального SWF достаточно каждый его байт поксорить на 55.
Теперь вы можете написать свой декриптор, или скрипт, который сделает все операции для расшифровки SWF. Вот и все, распаковка закончена. После расшифровки вы получите оригинальный SWF, код и ресурсы которого видны в декомпиляторе.
Остаётся надеяться, что это так и распакованный SWF не окажется точно так же расшифровщиком SWF, который вы только что ковыряли, хахаха!)
Иногда при упаковке используют принцип матрёшки — запихивают один расшифровщик в другой — и так десятки раз, да ещё и алгоритмы расшифровки везде разные.
В любом случае, динамическая распаковка все это обходит.
Запомните — в мире Flash, ничего, кроме названий, нельзя скрыть от глаз профессионала высокого класса с достаточным уровнем мотивации ��

Есть вопросы, идеи, комментарии? Оставляйте всё в виде комментариев к посту, пишите!

Что такое код swf_shapefillbitmaptile

swf_shapefillbitmaptile — устанавливает текущий режим заполнения для размножаемого растра.

Описание

void swf_shapefillbitmaptile (int bitmapid)

Устанавливает заполнение для размножения растра; пустые места заполнятся растром bitmapid (tiled).


Назад Оглавление Вперёд
swf_shapefillbitmapclip Вверх swf_shapefilloff

Материалы, которые находятся на этой страничке, любезно предоставлены Игорем Ивановым

Оптимизация flash для web.(как уменьшить размер .swf)

31.01.2012, 20:30

как отрыть flash-игру *.swf?
Доброго времени суток! Наткнулся на одну интересную игру, захотелось поиграть, но открыть не.

Как во Flash Buildere собрать swf содержащий звук и картинки?
Привет, не могу собрать swf, который будет исправно работать без дополнительных файлов. То есть.

Как добавить swf файл на слайд презентации в Macromedia Flash 8
Как добавить swf файл на слайд презентации в Macromedia Flash 8

Как уменьшить размер приложения для КПК
Добрый день! Решил посмотреть, как программируется для КПК. Поставил себе Lazarus 0.9.30. Все.

Подогнать размер flash картинки под размер компонента shockwave flash
В общем есть flash картинка. У нее снизу оставлено белое место (пустое) для дополнительных пунктов.

05.02.2012, 02:01 2 15.02.2012, 15:34 3

во-первых нужно удалять из библиотеки все неиспользуемые объекты.
т.е. если в кадре использовалась кнопка, потом ее заменили на другую, то она (по крайней мере в старых версиях) оставалась в библиотеке и экспортировалась в мувик.

во-вторых: следить за размером и качеством импортируемых медиа элементов, настраивать при экспорте их качество.

в-третьих: есть особые любители создавать мувики из кучи изображений, и практически не пользоваться кодом.
т.е. вместо наложения на тот же элемент, например, эффекта размытия, создается абсолютно новый (для среды разработки) и такой же самый (визуально) элемент где-нить в фотошопе с тем же эффектом, и импортируется потом в проект.

15.02.2012, 15:34

как в макромедии Flash записывать файлы в swf?
Всем привет. Решил занятся флеш курсами. Возникли такие вопросы. Может кто подскажет нормальный.

Как открыть swf файл без adobe flash
Доброго времени суток, господа. Встала необходимость прикрутить к корпоративному сайту интрасети.

Как правильно сохранить swf файл в Adobe Flash Pro 8?
Вроде бы все сохраняет и запускается мульт, но когда хочу конвертировать в любой видео файл, то.

Илон Маск рекомендует:  Вывод текста и шрифты mfc
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL