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

Адресация

< Урок 2 || Урок 3: 1234567 || Урок 4 >

Обращение к фильмам в уровнях

При помощи действия loadMovie() во Flash имеется возможность загрузить во Flash Player для одновременного воспроизведения сразу несколько .swf файлов. Кое-что об этом вы узнаете в данном упражнении, а подробно мы обсудим эту тему в Уроке 17 – "Загрузка внешних материалов". Файлы SWF, загружаемые в проигрыватель, помещаются в так называемые уровни. Функционально эти уровни (содержащие SWF) схожи со слоями (содержащими графический и прочий материал) на монтажном столе. Уровни, как и слои, можно представить себе в виде пачки параллельных плоскостей; они определяют "глубину" загрузки SWF-файла (и всего его содержимого) – окажется ли он "выше" или "ниже" других фильмов, загруженных в проигрыватель. Вы можете загрузить в проигрыватель, в различные уровни, несколько сот внешних .swf-файлов.

Загружая действием loadMovie() фильм в уровень, вы должны указать номер уровня для загрузки. При этом вы не обязаны загружать фильмы в уровни последовательно; номера можно выбирать произвольно, например, 731, а потом 46 – как вам угодно. Как только фильм загружен в уровень, путем для указания на него с других монтажных столов становится номер уровня. Предположим, вы загрузили фильм в Уровень 37, фильмы из других уровней могут обратиться к нему так:

_level37

Например, чтобы остановить воспроизведение монтажного стола в этом уровне, следует использовать такой синтаксис:

_level37.stop ();

Примечание Первый (основной) фильм автоматически загружается в Уровень 0.

Адресация к уровням – ключ к управлению SWF-фильмами, загруженными в них: как их основными монтажными столами, так и фильмами-символами, которые они могут содержать.

Необходимо сделать одно важное замечание. Когда вы загружаете действием loadMovie() дополнительные SWF-фильмы, то основной монтажный стол каждого SWF-фильма является корневым ( _root ) по отношению к другим фильмам (символам), содержащимся в данном SWF. Так, если фильмы из других уровней должны обращаться к SWF-фильму по адресу _level37, фильмы-символы, содержащиеся в самом этом SWF-фильме, обращаются к нему по адресу _root. Таким образом, можно сказать, что когда какой-либо монтажный стол обращается к другому монтажному столу в этом же уровне, он использует относительный путь.

В следующем упражнении мы загрузим фильмы в уровни 1 и 2, а затем будем управлять ими из Уровня 0.

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

Это будет фильм, который мы загрузим в Уровень 1. Внешне он похож на диалоговое окно некой операционной системы. Фильм состоит из шести слоев, которые названы соответственно их содержимому.

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

  1. Выделите кадр 1 основного монтажного стола и поместите в панель Действия следующий скрипт:
_visible = false;

Это действие адресуется текущему фильму, а поскольку данный фильм будет загружаться в Уровень 1, значит, фильм Уровня 1 сразу после загрузки будет невидимым – как будто это диалоговое окно поначалу закрыто. При помощи скрипта, помещенного в фильм Уровня 0 мы будем "открывать" это окно, вернее, делать его видимым.

  1. Выделите кнопку закрытия окна (она круглая, со знаком X) и введите в панели Действия следующий скрипт:
on (release) {
  _visible = false;
}

Этой кнопкой можно будет "закрыть" окно – после того, как оно станет видимым.

  1. Выделите прямоугольную невидимую кнопку в верхней части "диалогового окна" и добавьте следующий скрипт:
on (press) {
  _alpha = 50;
  startDrag (this);
}
on (release) {
  _alpha = 100;
  stopDrag ();
}

Пока эта кнопка нажата, фильм будет на 50% прозрачным, при этом его можно будет перетаскивать. Как только кнопка будет отпущена, перетаскивание прекратится, и фильм вновь станет непрозрачным на 100% – так мы сымитировали перетаскиваемое диалоговое окно.

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

on (press) {
  _level1._alpha = 50;
  startDrag ();
}
on (release) {
  _level1._alpha = 100;
  stopDrag ();
}

Как видите, здесь к действиям, изменяющим прозрачность, добавлен абсолютный путь, указывающий на Уровень 1. Конечно, работать это будет, но у такого подхода – явного указания абсолютного пути для действий, направленных на основной монтажный стол – имеется большой недостаток. В приведенном примере мы заранее знаем, что этот фильм будет загружаться именно в Уровень 1. А если бы проект был более сложным и динамичным, если бы этот фильм можно было бы загружать в произвольный свободный уровень? Предположим, этот фильм оказался бы загружен в Уровень 82, и к чему бы тогда привели эти строки в скрипте, изменяющие прозрачность? Ведь они обращаются к фильму в Уровне 1, а на самом деле текущий фильм находится в Уровне 82! В таких случаях лучше использовать относительные пути, тогда фильм можно будет загрузить в какой угодно уровень, и все его скрипты будут работать правильно.

  1. Экспортируйте фильм как backgroundControl.swf в папку Lesson03/Assets.

Тем самым мы создаем из нашего проекта SWF-файл, который будет загружаться в Уровень 1.

Теперь возьмемся за фильм, предназначенный для загрузки в Уровень 2.

  1. Сохраните свою работу в файл backgroundControl2.fla.

В следующем упражнении мы вернемся к работе над этим файлом.

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

Этот фильм будет загружаться в Уровень 2. Как и тот фильм, с которым мы только что работали, этот похож на диалоговое окно какой-то операционной системы. Здесь одна сцена, состоящая из четырех слоев, названия которых соответствуют их содержимому.

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

  1. Откройте панель Действия, выделите кадр 1 основного монтажного стола и введите следующий скрипт:
_visible = false;

Это действие указывает на текущий фильм, стало быть, фильм, загруженный в Уровень 2, сразу же станет невидимым – то же самое мы делали на шаге 2 для предыдущего фильма.

  1. Выделите кнопку закрытия окна (круглая, со знаком X) и введите в панели Действия следующий скрипт:
on (release) {
  _visible = false;
}

Эта кнопка будет "закрывать" окно – после того, как оно станет видимым.

  1. Выделите прямоугольную невидимую кнопку в верхней части "диалогового окна" и добавьте следующий скрипт:
on (press) {
  _alpha = 50;
  startDrag (this);
}
on (release) {
  _alpha = 100;
  stopDrag ();
}

Пока эта кнопка нажата, фильм в Уровне 2 станет на 50% прозрачным, его можно будет перетаскивать. Как только кнопка будет отпущена, перетаскивание прекратится, и фильм вновь станет непрозрачным на 100% – то же, что было на шаге 4: имитация перетаскиваемого диалогового окна.

На этом (пока что) закончим написание скриптов для этого фильма.

  1. Экспортируйте фильм как textBox.swf в папку Lesson03/Assets.

Тем самым мы создаем из нашего проекта SWF-файл, который будет загружаться в Уровень 2.

  1. Сохраните свою работу в файл textBox2.fla.

В следующем упражнении мы вернемся к работе над этим файлом.

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

Этот фильм будет загружаться в проигрыватель изначально (в Уровень 0, это произойдет автоматически, специально указывать номер уровня не нужно). В этот фильм мы поместим действия, загружающие backgroundControl.swf в Уровень 1 и textBox.swf в Уровень 2. Затем мы добавим действия, позволяющие управлять этими фильмами из Уровня 0.

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

  1. Выделите кадр 1 и введите в панели Действия следующий скрипт:
loadMovieNum ("backgroundControl.swf", 1);
loadMovieNum ("textBox.swf", 2);

Первое действие загружает фильм backgroundControl.swf в Уровень 1, второе – textBox.swf в Уровень 2.

Как вы помните, оба эти фильма сразу после загрузки становятся невидимыми. Чтобы можно было отобразить их, мы запрограммируем две из имеющихся на нашем "рабочем столе" кнопок.

  1. Выделите кнопку у левого края сцены, которая выглядит как значок с изображением компьютера, и введите в панели Действия следующий скрипт:
on (release) {
  _level1._visible = true;
}

Это действие делает видимым фильм, загруженный в Уровень 1, имитируя открытие диалогового окна. Как видите, здесь присутствует прямое обращение к фильму, загруженному в уровень.

  1. Выделите кнопку в виде бумажного свитка у левого края сцены и добавьте к ней следующий скрипт:
on (release) {
  _level2._visible = true;
}

То же самое, что для предыдущей кнопки, только в данном случае целью действия является фильм, загруженный в Уровень 2.

Теперь давайте запрограммируем кнопки, позволяющие масштабировать фильмы в уровнях 1 и 2.

  1. Выделите кнопку в виде стрелки, направленной влево, расположенную в нижней части сцены, возле цифры 1, и добавьте к ней следующий скрипт:
on (release) {
  _level1._xscale = _level1._xscale - 5;
  _level1._yscale = _level1._yscale - 5;
}

Если эту кнопку нажать и отпустить, размеры фильма в Уровне 1 по горизонтали и вертикали уменьшатся на 5%.

  1. Выделите кнопку в виде стрелки, направленной вправо, расположенную возле цифры 1, и добавьте к ней следующий скрипт:
on (release) {
  _level1._xscale = _level1._xscale + 5;
  _level1._yscale = _level1._yscale + 5;
}

То же самое, что для предыдущей кнопки, только здесь размеры фильма в Уровне 1 увеличиваются.

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

Для стрелки влево:

on (release) {
  _level2._xscale = _level2._xscale - 5;
  _level2._yscale = _level2._yscale - 5;
}

Для стрелки вправо:

on (release) {
  _level2._xscale = _level2._xscale + 5;
  _level2._yscale = _level2._yscale + 5;
}

Действия имеют тот же эффект, что для предыдущих двух кнопок, только направлены они на фильм, загруженный в Уровень 2.

  1. Выполните команду Управление > Проверить фильм (Control > Test Movie) для проверки работоспособности проекта.

Как только начнется воспроизведение этого проекта, backgroundControl.swf загрузится в Уровень 1, а textBox.swf – в Уровень 2. Однако на экране они не появятся – как вы помните, мы запрограммировали эти фильмы так, чтобы сразу после загрузки они становились невидимыми. Щелкните на одной из запрограммированных нами кнопок-значков на "рабочем столе", и соответствующий фильм отобразится на экране. Мы можем управлять размерами этих фильмов при помощи кнопок-стрелок в нижней части экрана пара. Эти фильмы можно перетаскивать мышью, можно закрыть любое из этих "диалоговых окон" предназначенной для этого кнопкой.

  1. Закрыв тестовое окно, вернитесь в среду разработки и сохраните свою работу как levelTarget2.swf.

В следующем упражнении мы используем тот же файл (немного измененный).

< Урок 2 || Урок 3: 1234567 || Урок 4 >
Евгений Стародубцев
Евгений Стародубцев

Вот задание:

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

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

Добрый день.

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

Болат Байгалиев
Болат Байгалиев
Казахстан, КазНИТУ, 2016