1 июля 2009 г.

Как проводить отладку flash онлайн

Иногда бывает ситуация, когда делаешь ролик на flash - и локально все работает замечательною. А когда выкладываешь в сеть - возникают проблемы. Где-то что-то "косячит".

Приходится вновь загружать Flash IDE, в сотый раз все проверять, находить ошибки - исправлять - выкладывать в сеть, и... О, черт! Снова что-то не так!

Чтобы упростить отладку роликов, их можно отлаживать прямо онлайн. Конечно, полнофункциональный Debugger - как в Flash IDE - будет недоступен. Но у Вас будет возможность писать в лог-файл все сообщения, которые Вы в ролике выводите с помощью команды trace().

Другими словами, Вы сможете получить то же, что и в окне Output во время выполнения ролика - но только при выполнении с сайта, онлайн.

Все, что для этого понадобится - установить себе специальный Flash Player Debug. Это версия, предназначенная для FLEX-разработчиков (FLEX выполняется с помощью обычного флеш-плеера). Разумеется, сама среда FLEX нам не понадобится - нам нужен только Flash Player Debug.

Итак, по шагам, что и как надо сделать, чтобы получить возможность отладки flash-роликов (.swf) в онлайне.

Шаг 1-й. Скачать и установить себе Flash Player Debug

Скачать этот плеер можно бесплатно, со страницы сайта Adobe - http://www.adobe.com/support/flashplayer/downloads.html

На картинке ниже показано, где на данной странице находится этот плеер - он есть в версии под Internet Explorer, и под Nescape-совместимые браузеры (Firefox, Opera). Ну и плюс под Мак и Linux:

Перед установкой данного плеера Вам необходимо удалить из системы Ваш текущий - обычный - flash-плеер. В Windows это можно сделать либо через "Панель управления/Установка и удаление программ", либо с помощью специального деинсталлятора от Adobe. Получить его можно на странице http://kb2.adobe.com/cps/141/tn_14157.html

Там же есть и инструкции - правда, на английском. Но думаю, никаких проблем у Вас не возникнет - просто перед деинсталляцией надо закрыть ВСЕ программы, которые могут использовать Flash - браузеры, мессенджеры (типа ICQ), отдельно открытые SWF-файлы и пр.

После установки Flash Player Debug запустите браузер, и откройте какой-нибудь флеш-ролик. Над роликом откройте контекстное меню Flash-плеера. Там должны быть пункты меню "Отладчик" и "Показать области перерисовки" (как на картинке ниже):

Если есть - все окей, плеер установлен.

Шаг 2-й. Настройка Flash Player Debug

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

А именно.

Сперва надо прописать файл конфигурации. Но в строго определенное место - в папку, которая назначена в системе как домашняя для текущего пользователя.

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

То есть - C:\Documents and Settings\<имя-пользователя>.

В самой системе Windows местоположение данной папки задается с помощью т.н. переменных системного окружения - HOMEDRIVE и HOMEPATH.

Но если хотите проверить наверняка - нажмите на меню "Пуск", выберите пункт "Выполнить...", введите cmd и нажмите Enter. Запустится интерпретатор командной строки. В нем введите команду set и вновь нажмите Enter. Перед Вами появится список всех переменных системного окружения - включая их имена и значения. Найдите там HOMEDRIVE и HOMEPATH. Они и задают то место, куда надо прописать файл конфигурации.

Если же этих переменных в списке нету, то их надо задать принудительно. Для этого следует нажать правой кнопкой мышки на иконке "Мой компьютер", и выбрать "Свойства". Затем в открывшемся окне перейти на вкладку "Дополнительно", и там - почти в самом низу - нажать на кнопку "Переменные среды".

Во вновь открывшемся окне следует создать две указанные переменные. Для этого нажимаем кнопочку "Создать" в верхнем блоке ("Переменные среды пользователя для <какое-у-Вас-там-имя>"), и заполняем два поля. Верхнее - имя переменной (HOMEDRIVE или HOMEPATH), второе - ее значение.

Для примера:

HOMEDRIVE C:

HOMEPATH \Documents and Settings\<имя-Вашего-пользователя>

После создания переменных перегрузите компьютер.

Итак, будем считать, что у нас уже задана папка для файла конфигурации - C:\Documents and Settings\<имя-пользователя>.

В этой папке нам надо создать текстовый файл, который называется mm.cfg.

В нем следует прописать несколько настроек (каждая с новой строки):

TraceOutputFileEnable=1 ErrorReportingEnable=1 MaxWarnings=500

Параметр TraceOutputFileEnable определяет, будут ли выводится в лог те строки, которые вы в Flash-ролике формируете с помощью команды trace(). Если этот параметр равен 0 (т.е. TraceOutputFileEnable=0) - то эти строки в лог выводится не будут. Если 1 - будут.

Параметр ErrorReportingEnable определяет, будут ли выводить в лог сообщения об ошибках воспроизведения. Если они Вам не нужны - можете их отключить (т.е. прописать ErrorReportingEnable=0).

Параметр MaxWarnings определяет, сколько строчек сможет записать в лог-файл Flash Player Debug. По умолчанию это значение равно 100 - после чего новые строки в лог не пишутся. На примере выше мы задали ограничение в 500 строк. Кстати, если прописать MaxWarnings=0, то мы снимем всякое ограничение на длину лога.

Важно - при каждом новом запуске Flash Player Debug содержимое лога уничтожается.

Шаг 3-й. Найти то место, где расположен лог :)

Раньше, до апдейта 9-й версии Flash Player Debug местоположение лог-файла можно было задать самому - прописав его в файле конфигурации mm.cfg (использовался параметр TraceOutputFileName=<полный-путь-к-файлу/имя-файла>).

Но теперь местоположение и имя файла жестко зафиксированы.

Называется он flashlog.txt.

В системах Windows 95 / 98 / ME / 2000 / XP этот файл находится по адресу C:\Documents and Settings\<имя-Вашего-пользователя>\Application Data\Macromedia\Flash Player\Logs

В системе Windows Vista лог-файл лежит по адресу C:\Users\<имя-пользователя>\AppData\Roaming\Macromedia\Flash Player\Logs

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

Шаг 4-й. Собственно отладка ролика

Открываем Flash IDE, создаем новый документ, и в первом кадре нашего единственного слоя вписываем ActionScript - что-то наподобие:

trace("Test message from Flash"); var a=10; var b=20; var c=a+b; trace("c = " + c);

Нажимаем Ctrl+Entrer, смотрим, все ли в порядке. Появится окно Output, где будет результат наших команд trace().

Перед тем как сделать Publish ролику, чтобы протестировать его онлайн, не забудьте в настройках публикации (Ctrl + Shift + F12) разрешить отладку для скомпилированного файла. У меня - во Flash IDE 8 она называется Debagging Permitted. У Вас же - если версия IDE более новая - может называться по другому. Например, Enable Debugging. Если ее не включить, в лог-файле может ничего не появится.

Затем загружаем наш ролик в веб (с помощью любого доступного способа внедрения в html - через JavaScript, тег <object> или <embed>) - и смотрим в лог-файл.

И видим:

Test message from Flash c = 30

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

В общем, удачной Вам отладки flash-роликов онлайн!

10 комментариев :

  1. какого крена у вас CTRL+V не работает???????? ... параноики

    ОтветитьУдалить
  2. О - заработало ))))) Извиняюсь

    ОтветитьУдалить
  3. на ответ особо не рассчитываю ибо нахамил ... нервничаю - 2 дня уже потерял .... и все же

    сделал все как у Вас написано, но ничего не заработало. Папки LOGS по пути C:\Documents and Settings\\Application Data\Macromedia\Flash Player вообще нету

    создал и папку и файл пробовал создовать - ничего не помогает. У меня стоят и FB 4.0 и Flash CS4 и в обоих отладчики нормально работают - мне нужен лог-файл, уже потерял херову кучу нервов, клавиатуру и слюней - как эту хрень заставить сбрасывать инфу в лог? в настройках публикации все разрешено.

    Еще раз извиняюсь за хамсвто - терпенье на исходе, бубны все порваны ((((

    ОтветитьУдалить
  4. \\ слеша - это потому что я скопировал неудачно - слеш вообще ессно у меня один

    ОтветитьУдалить
  5. C:\Documents and Settings\Administrator\mm.cfg - создал.

    файл flashlog.txt вообще отсутствует где-либо - искал по всему компу. Создавал вручную - не помогает

    ОтветитьУдалить
  6. в браузере проверил - версия плеера DEBUG 10.чего-то там

    ОтветитьУдалить
  7. Э-эх, мать моя женщина. Фиг зна что сказать. Когда я писал эту заметку, у меня стоял Flash IDE 8-й версии, сам же я юзал (и юзаю) Win XP - и для этой вязки все пути, приведенные в заметке, работали - поскольку я тестировал ролик один в онлайне.

    Но с тех пор я систему давно переставил, сел за Flash IDE версии CS3, а debug-версию плеера больше не ставил, поскольку нужды пока не было.

    Но могу посоветовать искать подобные логи в папках не с именем Macromedia, а уже с именем Adobe - возможно, они с переходом на CS4 и сменили название папок - фиг зна...

    Кроме того, попробуйте посмотреть не только по папкам C:\Documents and Settings\\Application Data\, но и в папках вида
    C:\Documents and Settings\\LOCAL SETTINGS\Application Data\

    Ну и еще мне как-то знакомый, который в флеше сильно рубит, говорил еще о какой-то программе, которая тоже позволяет тестировать Флеш подобным образом. Но история переписки в ICQ давно вытерта, а он сам не в сети - так что и переспросить не могу :(

    В общем, будем надеяться, что вам поможет Гугл.

    ОтветитьУдалить
  8. Александр, спасибо за статью! Очень полезное описание, за исключением путей и версий приложений. Остальное как прежде.

    Я использую плагин FlashTrace, он все показывает прямо в браузере. А в принципе есть еще весьма продвинутые логеры вроде Flash Console, Arthropod. О логировании во флеше http://kolonitsky.org/blog/2012/10/as3loggers/

    ОтветитьУдалить
  9. А может подсказать кто-нибудь, как включить логи встроенного плеера хромовского? Уж очень он забагованный (?)... Если его отключать и пользоваться другим - адобовским - логи пишутся, но и приложение работает корректно. А не работает оно как надо именно в стандартном, но я что-то не найду, как включить отображение/запись логов для него :(

    ОтветитьУдалить
  10. Видимо, это невозможно или никто не знает :) Пичаль :(

    ОтветитьУдалить