Блог от 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'у за информацию о существовании инструмента.
        

среда, 6 октября 2010 г.

Проверка орфографии в ActionScript 3.0

24 сентября 2010 года на сайте лаборатории Adobe обновился проект "Squiggly". Обновили проект до 4-ой пререлизной версии. О нем я услышал впервые, и очень им заинтересовался. Теперь хочу подделиться с вами.

Что такое проект "Squiggly"?

Это набор .swc-библиотек для работы с орфографией во Flash, Flex и AIR проектах. Название переводится как "волнистые" с намеком на то, что неправильные слова подчеркиваются именно этой линией.

Что он дает?

Возможности анализа текста в ActionScript 3.0.

Какие возможности?

Проверка орфографии и правил языка, варианты исправления неправильных слов.

На чем основан проект?

За основу взят проект "Hunspell".

Что это означает?

Это означает, что нам можно использовать уже готовые словари из других программ, основанных на этой же основе. Таких как: OpenOffice, Mozilla FireFox, Opera и многих других. Например, словари от Mozill'ы можно найти здесь. Но прежде чем использовать словари сторонних программ, пожалуйста ознакомьтесь с лицензионными соглашениями.

Как это работает?

Рассмотрим по-подробнее чистый ActionScript 3.0 проект. Загружаем архив с библиотеками. Нам понадобиться только одна из них: AdobeSpellingEngine.swc (Остальные предназначены для Flex-проектов). Подключаем её у нашему проекту.

Первым делом нужно загрузить словари с орфографией и правилами.

//
// Создаем экземпляр словаря
dictionary = new HunSpellDictionary();
//
// Добавляем обработчик события загрузки библиотек
dictionary.addEventListener(Event.COMPLETE, onDictanionaryComplete, false, 0, true);
//
// Грузим библиотеки
dictionary.load("dictionaries/en_US/en_US.aff", "dictionaries/en_US/en_US.dic");

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

/**
 * Метод обрабатывает событие успешной загрузки библиотек для словаря
 * Создает экземпляр объекта для проверки слов
 */
private function onDictanionaryComplete (e:Event):void
{
  //
  // Создаем экземпляр объекта для проверки слов, в параметре указываем ссылку на словарь
  spell_checker = new SpellChecker(dictionary);
}

Чтобы проверить какое-то слов нужно вызвать у проверяющего объекта метод checkWord();

spell_checker.checkWord("heloo");

Чтобы получить список возможных исправлений для слова имеется метод getSuggestions();

spell_checker.getSuggestions("heloo");

А как проверить содержимое текстового поля и подчеркнуть неправильные слова?

Алгоритм примерно такой:
  1. Разбиваем строку содержимого на список слов (В элементах списка нужно иметь значение слова, индекс первого символа и последнего).
  2. В цикле пробежаться по списку.
  3. Определить ошибочное слово.
  4. Зная индексы крайних символов с помощью метода TextField.getCharBoundaries() вычислить координаты слова
  5. Наложить на текстовое поле новый слой, в котором нарисовать волниcтые линии.

А пример?



Дополнительная информация

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

Обо мне



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

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

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

Рассылка

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