Блог от AS3Coder'a о JavaScript, HTML, CSS... и немного о Flash.

воскресенье, 24 октября 2010 г.

Отладка AS3-приложений с помощью FireFlash

Что такое FireFlash?

FireFlash - это плагин для FireBug'а, с помощью которого можно легко и удобно отлаживать свои приложения.

Что такое FireBug?

FireBug - это расширение для браузера Mozilla Firefox. Используется он для отладки web-приложений и пожалуй является самым сильным инструментом в этой области. Попробовав раз, отказаться от него уже не сможешь :)

Что умеет FireFlash?

FireFlash предоставляет .swf-файлам на странице доступ к консоли FireBug'a. С возможностями добавлять в консоль и окно Output используемого редактора ActionScript 3.0 записи разных типов:
  • Записи журнала
  • Информационные сообщения
  • Сообщения об опасности
  • Деревья объектов
  • ...
Как установить FireFlash?

Первым делом нужно установить Mozilla Firefox, если такого не имеется. Скачать его можно с официального сайта http://www.mozilla.com/.

Во-вторых, нужно поставить плагин FireBug не ниже версии 1.4.5. Установить его можно на соответствующей странице https://addons.mozilla.org/en-US/firefox/addon/1843/. После установки в правом нижнем углу браузера появится соответствующая иконка для открытия окна FireBug'a.



В-третьих нужно поставить сам FireFlash. Сделать это можно также со страницы дополнений к Mozilla Firefox по адресу https://addons.mozilla.org/en-US/firefox/addon/55979/. В правом верхнем углу содержимого FireBug'a вы увидите вот такую иконку.



Как обращаться к FireFlash из ActionScript 3.0?

Для этого имеется библиотека классов com.actionscript_flash_guru.* В ней имеется единственный необходимый нам класс com.actionscript_flash_guru.fireflashlite.Console.as, который содержит в себе различные методы для работы с FireFlash. Скачать архив с библиотекой можно с официальной страницы. А также можно подписаться на уведомления об обновлении библиотеки в Twitter.

А можно по-подробнее?
/**
 * 
 */
/**
 * Блокирует вывод сообщений в окно Output внутри используемого FrameWork
 * Другими словами класс консоли не регистриует свои сообщения при помощи фунции trace();
 */
Console.disableIdeTrace();
/**
 * 
 */
/**
 * Метод выводит в консоли FireBug'a содержимое объекта в виде дерева,
 * а также дублирует его в окне Output
 * 
 * @param Ссылка на объект
 * @param Количество вложенностей дерева
 * @param Сопутствующее сообщений
 */
Console.dir(obj, 3, "Custom message");
/**
 * 
 */
/**
 * Метод выводит в консоли FireBug'a содержимое xml-строки,
 * а также дублирует его в окне Output
 * 
 * @param Строка xml-узла
 * @param Сопутствующее сообщений
 */
Console.dirxml(xml, "Custom message");
/**
 * 
 */
/**
 * Метод выводит в окно Output сообщение с меткой ошибки, 
 * ссылкой на класс и метод инициализировавший ошибку
 * 
 * @param Строка с сообщением об ошибке
 */
Console.error("Error message");
/**
 * 
 */
/**
 * Метод созает таймер с заданным идентификатором и начинает отсчет.
 * Для того чтобы, остановить таймер необходимо 
 * использовать метод timeEnd();
 * 
 * @param Идентификатор таймера
 */
Console.time("your_id");
/**
 * 
 */
/**
 * Метод останавливает таймер c заданым идентификатором.
 * Выводит информационное сообщение в консоль FireBug'a
 * с указанием имени .swf-файла, идентикатора таймера и его значения.
 * А также дублирует сообщение в окно Output с соответвующей меткой
 */
Console.timeEnd("your_id");
/**
 * 
 */
/**
 * Метод проверяет условие, и если оно ложное 
 * выводит указанное сообщение в окно Output
 * 
 * @param Условие
 * @param Сообщение для ложного значения
 */
Console.assert(false, "Messages for the false values");
/**
 * 
 */
/**
 * Метод выводит в окно Output сообщение с
 * ссылкой на класс и метод инициализировавший вызов
 * 
 * @param Строка с сообщением об ошибке
 */
Console.stackTrace();
/**
 * 
 */
/**
 * Метод выводит простое сообщение в консоль FireBug'a, 
 * а также дублирует его в окно Output с соответствующей меткой
 * 
 * @param Текстовое сообщение
 */
Console.log("Simple message");
/**
 * 
 */
/**
 * Метод выводит информационное сообщение в консоль 
 * FireBug'a с соответствующей иконкой, а также дублирует 
 * его в окно Output с соответствующей меткой
 * 
 * @param Информационное сообщение
 */
Console.info("Information message");
/**
 * 
 */
/**
 * Метод выводит сообщение об опасности в консоль 
 * FireBug'a с соответствующей иконкой, а также дублирует 
 * его в окно Output с соответствующей меткой
 * 
 * @param Cообщение об опасности
 */
Console.warn("Warning message!");
/**
 * 
 */
/**
 * Метод дублирует поведение метода log();
 */
Console.debug("Simple message");
/**
 * 
 */
/**
 * Метод добавляет в консоли FireBug'а блок для группы
 * с заданным названием, а также дублирует соответсвующую 
 * запись в окне Output
 * 
 * @param Названия для группы
 */
Console.group("Group name");
/**
 * 
 */
/**
 * Метод дублирует поведение метода Console.group();
 * только блок будет иметь закрытое состояние
 */
Console.groupCollapsed("Group name");
/**
 * 
 */
/**
 * Метод закрывает блок, открытый ранее
 * Используется только после вызова методов 
 * Console.group(); и Console.groupCollapsed();
 */
Console.groupEnd();

А как-же пример?

Откройте консоль FireBug'a и понажимайте на кнопки из примера. Вы должны увидеть результат примеров.



Дополнительно

Более подробно ознакомиться с FireFlash можно на его официальной странице

Огромное спасибо за новый инструмент Nicholas Dunbar, надеюсь его работа прижевется в руках разработчиков ActionScript-приложений. А также спасибо Flastar'у за информацию о существовании инструмента.
        

3 комментария:

  1. Некоторый минус библиотеки в том, что mxmlc нервно реагирует на некоторые неточности, по отношению к которым компилятор Flash IDE вполне толерантен: скажем, тип вывода у метода не указан - бросает warning и не комиплирует. В свое время я искала способы обойти это дело - признаться, не нашла. Так что, может быть, по библиотеке надо пройтис напильником - вроде мелочи же.

    ОтветитьУдалить
  2. Зачем нам буржуйские заморочки?

    Смотрим сюда: http://www.silin.su/#AS3/utils/console/bin

    И вообще, плагин к плагину... даже в ишаке работают log, info, warn и error. Что мешает самому перенаправить trace:

    var o:Object = { a:1, b:2, c:3 };
    // вставить проверку на поддержку метода
    ExternalInterface.call('dir', o);
    // работает в сафари, хроме и опере

    ОтветитьУдалить
  3. elena, см. http://www.docsultant.com/site2/articles/flex_cmd.html
    ключи -strict и -warnings установить в false.

    а также
    -compiler.show-*-warnings
    -compiler.warn-*

    как раз флексовый компилятор настраивается очень хорошо
    или в ФД открыть свойства проекта -- Compiler Options и установить там кое-какие из вышеназванного

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

Можно использовать некоторые HTML-теги, например <b>, <i>, <a>

Поиск по блогу

Обо мне



Farid Shamsutdinov (AS3Coder)
Russia, Tatarstan, Kazan
as3coder@gmail.com

Подробнее...

Постоянные читатели

© 2014 Farid Shamsutdinov. При копировании материалов, ссылка на источник обязательна. Технологии Blogger.