В. Дронов - Macromedia Flash Professional 8. Графика и анимация
Предположим, что перед нами стоит задача отыскать в текстовых блоках адрес электронной почты, оканчивающийся на".сот". Как это сделать? Может быть, поискать значок "собака" (@)? Но ведь он может встретиться и в обычном тексте, не являющемся почтовым адресом. Искать подстроку".сот"? Но тогда Flash вывалит в таблицу результатов поиска панели Find and Replace все найденные им интернет-адреса. Что же делать?..
Нам поможет только регулярное выражение. А именно, такое:
[email protected]+.com
На первый взгляд, это бессмысленный набор символов, в котором с трудом угадывается нечто знакомое. Чтобы разобраться в нем, напишем таблицу, содержащую описание символов регулярных выражений поиска всех оканчивающихся на".сот" почтовых адресов (табл. 22.1).
Теперь, когда нам все стало ясно, можно опробовать приведенное выше регулярное выражение. Выберем в раскрывающемся списке For панели Find and Replace пункт Text, введем наше регулярное выражение в область редактирования Text и не забудем включить флажок Regular expressions. Ура, работает!
Обобщим сведения, почерпнутые из приведенного примера.
В регулярных выражениях для обозначения различных фрагментов текста используются специальные символы — литералы. Если же нужно найти какой-либо символ, совпадающий с литералом, мы должны будем предварить его символом обратной косой черты (). Например, чтобы найти точку, мы используем последовательность символов ..
С помощью регулярных выражений мы можем выполнять поиск самых разнообразных слов и словосочетаний. Например, регулярное выражение
(multi|hyper)media
совпадает со словами "multimedia" и "hypermedia", но не совпадает со словом "media". Литерал "вертикальная черта" (|) задает поиск либо первой, либо второй подстроки (в нашем случае — либо "multi", либо "hyper"), а скобки здесь использованы для того, чтобы отделить друг от друга две части выражения. Если бы мы их не поставили, получилось бы выражение multi | hypermedia, совпадающее со словами "multi" и "hypermedia", а нам это не нужно.
А вот в выражении
[.!?]$
в квадратных скобках перечислены символы, один из которых должен встретиться в тексте. Это следующие символы: точка (предварена символом , так как является литералом), восклицательный знак и вопросительный знак (предварен обратной косой чертой, так как он тоже литерал). Последний литерал — символ $ — обозначает конец строки. В результате мы получим регулярное выражение, которое ищет один из перечисленных знаков препинания, стоящий в конце строки.
Мы убедились, что при поиске подстрок регулярные выражения очень помогают. Но помогут ли они при замене подстрок? Разумеется!
Предположим, что нам нужно найти адреса электронной почты и в порыве патриотизма заменить в них окончание "сот" на "ru". Для поиска в этом случае мы используем уже знакомое и работающее регулярное выражение
/b([email protected]+.)com
Стоп! Зачем мы взяли часть выражения в скобки? Ведь скобки используются для группировки, т. е. для отделения одной части регулярного выражения от других его частей. Здесь же ничего отделять не нужно — все и так работает.
Дело в том, что Flash, помимо всего прочего, помещает подстроку, совпадающую с заключенной в скобки частью регулярного выражения, в особую переменную, откуда ее потом можно будет извлечь. Таких переменных (иногда говорят — ячеек) предусмотрено девять, и обратиться к их содержимому можно по их номерам. В частности, извлечь содержимое первой ячейки в нашем случае можно так:
$1
Тогда заменить окончание почтового адреса следует с помощью такого регулярного выражения:
$1ru
Как видим, здесь все совсем просто. Мы берем подстроку, найденную первым регулярным выражением, и добавляем к ней окончание "ru".
Можно проверить два приведенных регулярных выражения. Первое нужно набрать в области редактирования Text, верней группы панели Find and Replace, а второе — в области редактирования Text нижней группы. И, конечно же, не забываем включить флажок Regular expressions.
Напоследок осталось привести полный список всех литералов регулярных выражений. Они перечислены в табл. 22.2.
Печать
Последнее, что мы рассмотрим в этой главе, — это процесс печати фильмов Flash. Мы узнаем, как распечатать документ, открытый в среде Flash, и как позволить пользователю печатать только избранные кадры уже готового фильма, сохраненного в формате Shockwave/Flash. И начнем мы с рассмотрения процесса печати в среде Flash.
Печать документов Flash
Процесс печати документов, организован во Flash несколько по-иному, нежели в других программах. Сейчас мы рассмотрим эти отличия. И заодно перечислим все операции, связанные с печатью документов во Flash.
Собственно печать документа Flash осуществляется обычным для Windows-приложения способом. Мы выбираем пункт Print меню File или нажимаем комбинацию клавиш <Ctrl>+<P>. После этого на экране появляется стандартное диалоговое окно печати Windows, в котором мы можем выбрать принтер и задать количество печатаемых копий.
Как и многие программы, в которых предусмотрена печать документов, Flash предоставляет возможность задать параметры настройки печати, а именно: размер бумаги, отступы, масштаб и центрирование изображения. Чтобы получить доступ к этим настройкам, выберем пункт Page Setup меню File. На экране появится диалоговое окно Page Setup (рис. 22.7).
В правом верхнем углу этого окна находится группа элементов управления, с помощью которых задаются отступы от краев бумаги и центрирование печатаемого изображения. Сами отступы задаются в полях ввода Left (отступ слева), Тор (сверху), Right (справа) и Bottom (внизу) в дюймах. Центрирование включается и выключается с помощью флажков Horizontal (по горизонтали) и Vertical (по вертикали) группы Center.
В группе Paper находятся элементы управления, служащие для задания размера бумаги и способа ее подачи. Размер бумаги выбирается в раскрывающемся списке Size, а способ подачи — в списке Source.
Группа переключателей Orientation служит для выбора ориентации листа бумаги, на котором будет печататься изображение. Переключатель Portrait включает портретную (вертикальную) ориентацию, а переключатель Landscape — ландшафтную (горизонтальную).
В группе Layout находятся элементы управления, служащие для задания расположения печатаемого изображения на листе. Рассмотрим их подробнее.
С помощью пунктов First Frame Only и All frames раскрывающегося списка Frames можно указать, какой кадр анимации будет напечатан. Первый пункт вызывает печать только первого кадра анимации, второй — всех кадров.
С помощью раскрывающегося списка Layout задается расположение кадров фильма на листе бумаги. Этот список имеет пять пунктов:
□ Actual Size — на одну страницу выводится один кадр фильма;
□ Fit On One Page — на одну страницу выводится один кадр фильма, причем выполняется автоматическое масштабирование для того, чтобы кадр заполнил страницу целиком;
□ Storyboard — Boxes — на одну страницу рядами выводятся несколько кадров фильма, причем каждый кадр помещается в рамке;
□ Storyboard — Grid — на одну страницу рядами выводятся несколько кадров фильма, причем они отделяются друг от друга линиями;
□ Storyboard — Blank — на одну страницу рядами выводятся несколько кадров фильма без рамок и разделяющих линий.
Если выбран пункт Actual Size списка Layout, становится доступным поле ввода Scale. В этом поле задается масштаб изображения (кадра), выводимого на страницу, в процентах. Это может помочь в случае, если кадры нашего фильма очень мелкие или, наоборот, очень крупные.
Если в списке Layout выбран пункт Storyboard — Boxes, Storyboard — Grid или Storyboard — Blank, в окне Page Setup появятся флажок Label frames и
поля ввода Frames и Frame margin. Если включить флажок Label frames, то под каждым кадром на печатаемой странице Flash будет подставлять его имя или номер. В поле ввода Frames вводится количество кадров, располагающихся в одном горизонтальном ряду; косвенно этот параметр влияет на количество кадров, помещаемых на одну страницу, и, соответственно, на масштаб кадров. А в поле ввода Frame margin указывается расстояние между отдельными кадрами, располагаемыми на странице; это расстояние задается в текущей единице измерения.