Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4460 / 498 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 14:

Динамическое управление фильмами-символами

Удаление динамически созданного содержания

Динамически созданные линии можно легко удалить с любого монтажного стола при помощи метода clear(). Синтаксис прост:

путь.clear();

Экземпляры клипов, созданные при помощи duplicateMovieClip() или attachMovie() (как значки, которые мы перетаскивали в область рисования), можно удалить при помощи метода объекта MovieClip removeMovieClip().

Примечание С помощью этого метода можно удалить только те экземпляры клипов, которые созданы динамически, при помощи ActionScript. Созданные вручную, то есть перетащенные из библиотеки на сцену в процессе создания фильма, так удалить нельзя.

Удаление экземпляров клипов может пригодиться для динамического удаления содержимого со сцены, для реинициализации приложений и освобождения системных ресурсов, при программировании различных функциональных возможностей в приложениях. Синтаксис метода прост:

someMovieClip.removeMovieClip();

В этом упражнении мы с вами создадим функцию, которая будет удалять из области рисования все динамически нарисованные линии, а также экземпляры клипа icon, перетащенные в область рисования.

  1. Откройте файл draw4.fla из папки Lesson14/Assets.

В таком виде мы оставили файл после выполнения предыдущего упражнения. В этом упражнении мы добавим в controller функцию, очищающую область рисования. Запускаться функция будет скриптом, который мы присоединим к кнопке Clear, находящейся в экземпляре клипа window2.

  1. Откройте панель Действия, выделите экземпляр клипа 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, нумерация дубликатов вновь начнется с нуля.


  1. Двойным щелчком на экземпляре window2 откройте его для редактирования на месте. Перейдите к кадру с меткой admin.

В этом кадре имеется две кнопки – Clear и Print. Нам нужно присоединить к кнопке Clear скрипт, вызывающий функцию clearContent() из экземпляра клипа controller. Заодно уж давайте добавим скрипт к кнопке Print.

  1. Выделите кнопку Print и присоедините к ней такой скрипт:
on (release) {
  printAsBitmap ("_root", "bmovie");
}

Если эту кнопку нажать и отпустить, графическое содержимое главного монтажного стола (то есть, все, что в момент нажатия кнопки находится на сцене, включая динамически созданные экземпляры) будет распечатано как растровое изображение в натуральную величину.

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

  1. Выделите кнопку Clear и введите такой скрипт:
on (release) {
  _parent.controller.clearContent();
}

Если эту кнопку нажать и отпустить, будет выполнена функция clearContent(), присоединенная к экземпляру controller.

  1. Командой Управление > Проверить фильм (Control > Test Movie) запустите тест фильма. Изобразите что-нибудь в области рисования, затем нажмите кнопку Clear.

При нажатии кнопки Clear будет выполнена функция очистки, цикл while в ней удалит все созданные в области рисования экземпляры клипов.

  1. Закройте тестовый фильм и сохраните свою работу как draw5.fla.

На этом закончено упражнение и весь урок. Как видите, процесс динамического удаления материалов куда проще процесса создания. Ну, теперь вы умеете делать и то, и другое, а это обеспечит вашим проектам колоссальные возможности взаимодействия с пользователем. Ну, разве не великолепен этот ActionScript?!

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Галина Кузнецова
Галина Кузнецова

Добрый день.

Можно ли получить среду Flash для обучения бесплатно?

Ольга Ремез
Ольга Ремез
Латвия, Рига
Светлана Ведяева
Светлана Ведяева
Россия, Саратов