Взаимодействие со средой разработки

Как ни удивительно, но в ActionScript имеются элементы, назначение которых связано с взаимодействием со средой разработки Flash. Объект CustomActions предназначен для динамической инициализации класса или компонента. Проще говоря, он дает возможность так настроить панель Actions, чтобы в дереве языка в се левой части отобразилась ветвь, «листочками» которой будут являться методы, свойства и события соответствующего класса или компонента. Это позволяет применять собственные классы и компоненты точно так же, как и предопределенные. Функция MMExecute() предназначена для передачи команд из Flash-фильма JSFL скриптовому языку среды разработки Flash. Применяя JSFL, вы можете создавать собственные инструменты или командыменю.

Настройка панели Actions
Для панели Actions, равно как и для всей среды разработки Flash MX 2004, характерна одна замечательная особенность — она является расширяемой, то есть дерево языка, отображенное в ее левой части, не статичное. При необходимости вы можете вводить в него новые элементы либо, точно зная, что некоторый класс или компонент вам не понадобится, удалять уже существующие. Это очень важная возможность для профессиональных разработчиков.


Зачастую созданный класс или компонент приходится использовать многократно. При этом его стоит поместить в папку Classes или Components директории Configuration (ее приблизительный адрес в Windows 2000 C:\Documents and Settings\user\Local Settings\ Application Data\Macromedia\Flash MX 2004\en\Confi guration). В результате класс или компонент будет доступен из среды разработки точно так же, как предопределенные компоненты и классы, Только в дереве языка слева на панели Actions не появится ветви, описывающей методы, свойства и события нового класса или компонента. Соответствующие элементы в коде не будут выделяться цветом, над ними не будут появляться всплывающие подсказки, не будет работать режим быстрого завершения кода. Чтобы для пользовательского класса или компонента были характерны все перечисленные особенности, присущие по умолчанию встроенным компонентам и классам, требуется внести изменения в три XML-документа, отвечающие за настройку панели Actions. Расположены эти документы в папке ActionsPanel директории Configuration. Называются они ActionsPanel.xml, AsCodeHints.xml и AsColorSyntax.xml.

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


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

... — парный тeг, инициализирующий документ. Все относящиеся к документу инструкции должны располагаться внутри него;

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

o name — название ветви. Например, чтобы создать ветвь для класса Cat, следует Набрать name="Саt";

o id — идентификатор элемента XML-документа. Выполняет служебные функции и не имеет прямого отображения на панели Actions;

o sort — определяет, будут ли элементы ветви отображаться отсортированными по алфавиту (true) или же нет;

o tiptext — текст подсказки, которая будет отображена при наведении указателя мыши на значок ветви;

o helpid — номер статьи в справочной системе, описывающей класс, компонент или группу лексем, которой соответствует данная ветвь;

o version — версия плейера, начиная с которой имеется поддержка принадлежащих к ветви элементов языка.


Если фильм будет создаваться под более ранний плейер, то подпись ветви будет подчеркнута ярко-желтым маркером, показывая пользователю, что применять данные элементы нельзя;

o index —определяет, будет ли в списке Index (где все элементы языка отображаются в алфавитном порядке) после имен элементов, принадлежащих данной ветви, в скобках выводиться ее имя. Присваивать атрибуту index значение true следует, если ветви соответствует класс или компонент;

— одиночный тег, идентифицирующий элемент языка. Должен быть вложен в нужный тег . Если атрибут sort тега равен false, то последовательность отображения элементов в ветви будет зависеть от очередности задания тегов . Тег требует указания следующих атрибутов:

o name — имя элемента языка;

o id, tiptext, helpid, version — эти атрибуты имеют такое же назначение, как и в случае тега ;

o text — определяет, какой текст будет введен в код при двойном щелчке по значку элемента. Например, чтобы на поле была добавлена глобальная функция stop(), следует набрать text="stop();\n"

Если функция принимает параметры, то их следует указать, выделив парой знаков « %».


При этом при помещении курсора ввода в скобки функции (или нажатии кнопки Show Code Hint) над ним будет отображаться всплывающая подсказка с текстом атрибута text. Знаки процента не визуализируются. Например;

text="loadMovie(% url, target, method %);\n"

Если функция предполагает несколько вариантов синтаксиса, то необходимо прописать их все, используя атрибуты с именами text, text2, text3 и т, д. В результате на панели всплывающей подсказки появятся кнопки, нажимая которые можно будет просмотреть все варианты синтаксиса.

Например:
text = "gotoAndPlay (% frame %);\n" text2= "gotoAndPlay (% scene, frame %);\n"

В случае методов и свойств имя элемента стоит выводить с именем условного объекта (или хотя бы с одним оператором «.»):

text="array_name.sortOn(% key %)" o quickey — задает «горячие» клавиши для элемента. Если, например, вы присвоите данному атрибуту значение «ab», то ввести лексему можно будет, нажав клавиши (а) и (b) при нажатой Esc;

o codehint — определяет, будет ли отображаться всплывающая подсказка для элемента;

— одиночный тег, выполняющий ту же роль, что и тег .


Их различие состоит в том, что приспособлен для инициализации методов и свойств, а — глобальных функций и переменных. Наборы атрибутов у тегов и практически идентичные, за исключением двух атрибутов, присущих только :

o type — в этом атрибуте определяется, является ли данный элемент методом («procedure»), обработчиком стандартного события («event») или события, на которое объект должен быть явно «подписан» («listener»);

o object — класс, к которому относится элемент. Его название будет использовано во
всплывающей подсказке;

... — элементы, вложенные в этот тег, выводятся на панели Actions в том случае, если поддерживается режим, прописанный в его атрибуте mode. Данный тег является служебным и для практики интереса не представляет.

Дополняя документ ActionsPanel.xml, можно с легкостью добавлять в дерево языка панели Actions новые элементы. Для примера попробуем инициализировать гипотетический класс Cat.

1. Откройте документ ActionsPanel.xml в любом текстовом редакторе.

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

3. Введите следующий код:



version="7"/>



version="7"/>

version="7"/>


version="7">
text=".setColor (% color %)" object="Cat" type="procedure" version="7"/>




4. Сохраните измененный документ ActionsPanel.xml (в формате UTF-8).

5. Перезапустите Flash (это нужно сделать, так как настройка панели Actions происходит при запуске программы).

Если все было сделано верно, то в дереве языка слева на панели Actions появится новая корневая директория myclasses, содержащая ветвь, описывающую класс Cat.

Попробуйте подвести указатель мыши к любому элементу ветви Cat. Вы увидите, как сразу же над ним появится желтое окно с подсказкой. Затем выполните двойной щелчок по пункту setColor.

Итак, теперь с классом Cat можно работать точно так же, как с любым предопределенным классом. Правда, его элементы все еще не выделяются цветом. Чтобы исправить этот недостаток, следует внести небольшое дополнение в документ AsColorSyntax.xml.

В отличие от ActionsPanel.xml, структура AsColorSyntax.xml довольно простая. Данный документ образуют следующие теги:

... - корневой тег документа. Все остальные теги должны быть вложены в него;

— одиночный тег, служащий для инициализации ключевых слов. Имя ключевого слова прописывается как значение атрибута text;

— одиночный тег, аналогичный , но предназначенный для инициализации идентификаторов (т. е. свойств, методов, функций, переменных, классов);

— одиночный тег, инициализирующий глобальные свойства (их отличительной чертой является то, что их имена начинаются с символа «_»: _xscale, _totalframes);
... — выполняет те же функции, что и в случае документа ActionsPanel.xml.

Чтобы элементы нашего гипотетического класса Cat начали выделяться цветом, в тег документа AsColorSyntax.xml следует вложить следующие строки:





Обратите внимание, что вместе с именем метода или свойства необходимо прописать и оператор «.».

Сохраните измененный документ и перезапустите Flash. Затем попробуйте ввести на поле кода, например, метод sctColor() класса Cat. Вы увидите, что в результате проделанной нами работы, он стал выделяться синим цветом.

Наиболее простой из трех используемых при настройке панели Actions документов — AsCodeHints.xmt. У него всего три тега.

– корневой тег документа;

— введен дли того, чтобы можно было задать текст всплывающих подсказок для обработчиков событий в стиле Flash 5 on() и onClipEvent(). Сделать это при помощи атрибута tiptext тега документа ActionsPanel.xml ввиду специфики синтаксиса данных обработчиков невозможно. Текст подсказки прописывается в атрибуте pattern тега . Почти наверняка вам не придется задавать свои теги , поэтому о нем можно сразу же забыть;

— отвечает за режим автоматического завершения кода. Как вы помните, если использовать в имени переменной особый суффикс, указывающий на класс объекта, который она должна хранить, то после того, как вы поставите «.», появится меню со всеми методами, свойствами и событиями этого класса. Режим быстрого завершения кода значительно облегчает создание скриптов, так как не нужно помнить точное написание всех лексем. То же, какой суффикс будет соответствовать какому классу, и определяет тег . Его атрибуты следующие:

o pattern — шаблон имени переменной. Задается по схеме «*_suff>>, где suff^—указывающий на класс суффикс. Например, чтобы инициализировать суффикс «mov», следует набрать pattern="*_mov"

o object — в данном атрибуте указывается, к какому классу относится переменная, удовлетворяющая прописанному в атрибуте pattern шаблону.

Например:
<"typeinfo pattern="*_xmlsocket" object="XMLSocket"/>

Тег дает возможность инициализировать не только суффиксы, но и префиксы:



На практике суффиксы быстрого завершения кода играли заметную роль только во Flash MX. Во Flash MX 2004 вместо них техничнее использовать строгую типизацию. Тем не менее, вы можете редактировать документ AsCodeHints.xml, если хотите заменить принятые по умолчанию суффиксы или ввести суффиксы для собственных классов. Например, чтобы меню с элементами класса Cat появлялось тогда, когда имя переменной завершается суффиксом «_cat», необходимо добавить в AsCodeHints.xml следующий тег:



Сохраните измененный документ и перезапустите Flash. Затем попробуйте набрать любой идентификатор с суффиксом «cat». После того как вы введете оператор «.», около него появится необходимое меню.

Не стоит бояться изменять документы ActionsPanel.xml, AsCodeHints.xml и AsColorSyntax.xml. Даже если вы безнадежно испортите один из них, то переустанавливать Flash не придется. Просто удалите соответствующий файл из папки ActionsPanel и перезапустите программу. Flash автоматически его восстановит а принятом по умолчанию виде.

Редактируя отвечающие за настройки панели Actions ХМL-документы, вы можете не только инициализировать собственные классы. При этом можно включить в дерево языка полезные недокументированные элементы ActionScript (а также активизировать для них выделение цветом и ввести суффиксы автоматического завершения кода). Так, автор данной книги создал специальную ветвь для хранения недокументированных объектов вроде функции ASSetPropFlags() или объекта ASBroadcaster, назвав ее undocumented. Попробуйте и вы оптимизировать панель Actions «под себя». Затраченное на это время быстро окупится повышением удобства работы.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Взаимодействие с принтером
Взаимодействие со средствами чтения с экрана
Объект CustomActions
Определение размеров фильма и величины окна плейера
Получение информации об использующемся аппаратном и программном обеспечении