Дострочное пересдача экзамена
|
Динамическое управление фильмами-символами
Удаление динамически созданного содержания
Динамически созданные линии можно легко удалить с любого монтажного стола при помощи метода clear(). Синтаксис прост:
путь.clear();
Экземпляры клипов, созданные при помощи duplicateMovieClip() или attachMovie() (как значки, которые мы перетаскивали в область рисования), можно удалить при помощи метода объекта MovieClip removeMovieClip().
Примечание С помощью этого метода можно удалить только те экземпляры клипов, которые созданы динамически, при помощи ActionScript. Созданные вручную, то есть перетащенные из библиотеки на сцену в процессе создания фильма, так удалить нельзя.
Удаление экземпляров клипов может пригодиться для динамического удаления содержимого со сцены, для реинициализации приложений и освобождения системных ресурсов, при программировании различных функциональных возможностей в приложениях. Синтаксис метода прост:
someMovieClip.removeMovieClip();
В этом упражнении мы с вами создадим функцию, которая будет удалять из области рисования все динамически нарисованные линии, а также экземпляры клипа icon, перетащенные в область рисования.
- Откройте файл draw4.fla из папки Lesson14/Assets.
В таком виде мы оставили файл после выполнения предыдущего упражнения. В этом упражнении мы добавим в controller функцию, очищающую область рисования. Запускаться функция будет скриптом, который мы присоединим к кнопке Clear, находящейся в экземпляре клипа window2.
- Откройте панель Действия, выделите экземпляр клипа controller и добавьте в обработчик события load следующую функцию:
function clearContent () { _root.holder.clear(); i = 0; while (++i <= v) { name = "object" + i; _root[name].removeMovieClip(); } v = 0; }
Первое действие в этой функции удаляет все динамически нарисованные линии из экземпляра клипа holder. Далее следует несложный цикл while, удаляющий все перетащенные на сцену экземпляры клипа icon. Значение переменной v равно общему числу перетащенных экземпляров icon, ведь v увеличивается на единицу всякий раз, когда в области рисования создается дубликат icon – мы с вами запрограммировали это в функции buildIconList(), в предыдущем упражнении. Теперь мы используем значение v для определения количества итераций цикла, удаляющего дубликаты. После того, как цикл завершен (все экземпляры icon из области рисования удалены), переменной v присваивается значение 0, так что когда в область рисования будет перетащен новый экземпляр icon, нумерация дубликатов вновь начнется с нуля.
- Двойным щелчком на экземпляре window2 откройте его для редактирования на месте. Перейдите к кадру с меткой admin.
В этом кадре имеется две кнопки – Clear и Print. Нам нужно присоединить к кнопке Clear скрипт, вызывающий функцию clearContent() из экземпляра клипа controller. Заодно уж давайте добавим скрипт к кнопке Print.
- Выделите кнопку Print и присоедините к ней такой скрипт:
on (release) { printAsBitmap ("_root", "bmovie"); }
Если эту кнопку нажать и отпустить, графическое содержимое главного монтажного стола (то есть, все, что в момент нажатия кнопки находится на сцене, включая динамически созданные экземпляры) будет распечатано как растровое изображение в натуральную величину.
Примечание Этим скриптом мы хотим продемонстрировать, что динамически созданные экземпляры можно распечатать столь же легко, как и другое содержимое фильма. Если бы создавали более изощренное приложение, мы могли бы предпочесть распечатывание только содержимого области рисования. Однако тогда пришлось бы иначе строить наши функции, а мы не захотели усложнять упражнения, поскольку изучение возможностей печати не является целью данного урока.
- Выделите кнопку Clear и введите такой скрипт:
on (release) { _parent.controller.clearContent(); }
Если эту кнопку нажать и отпустить, будет выполнена функция clearContent(), присоединенная к экземпляру controller.
- Командой Управление > Проверить фильм (Control > Test Movie) запустите тест фильма. Изобразите что-нибудь в области рисования, затем нажмите кнопку Clear.
При нажатии кнопки Clear будет выполнена функция очистки, цикл while в ней удалит все созданные в области рисования экземпляры клипов.
- Закройте тестовый фильм и сохраните свою работу как draw5.fla.
На этом закончено упражнение и весь урок. Как видите, процесс динамического удаления материалов куда проще процесса создания. Ну, теперь вы умеете делать и то, и другое, а это обеспечит вашим проектам колоссальные возможности взаимодействия с пользователем. Ну, разве не великолепен этот ActionScript?!