Как уменьшить размер SWF-файла за счет оптимизации кода? - PullRequest
4 голосов
/ 26 января 2011

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

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

Сегодня наше приложение имеет 1358 КБ:

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

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

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

Спасибо.

Вот приложение: http://www.pearltrees.com/nicolas/137698/

Ответы [ 3 ]

3 голосов
/ 27 января 2011

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

debug = "false"

иначе финальный swf будет почти в 2 раза больше.

2 голосов
/ 26 января 2011

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

1 голос
/ 26 января 2011

Подумайте над изучением предварительных загрузчиков и модулей.

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

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

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

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

...