Macromedia Flash Professional 8. Графика и анимация
Шрифт:
Пример:
unloadMovie(_root.car.engine);
В этом выражении мы избавляемся от двигателя нашего автомобиля — зачем он нужен, раз автомобиль все равно не двигается с места.
А вот это выражение выгрузит сам основной фильм:
unloadMovie(_level0._root);
после чего проигрыватель Flash, оставшись не у дел, автоматически завершит свою работу.
Только что мы выяснили, как вложить загружаемый фильм в основной. Но Flash предоставляет также возможность наложить содержимое внешнего файла на содержимое основного фильма так,
Зачем может понадобиться перекрытие фильмов? А, например, для создания Web-сайтов, основанных на Flash. В этом случае сначала загружается и выводится на экран "объединяющий" фильм, содержащий заголовок сайта, полосу навигации и какой-то изначальный текст. При щелчке на какой-либо кнопке полосы навигации особый сценарий загружает фильм с соответствующим содержимым и выводит его на экран как перекрывающийся клип, перекрывая изначальное содержимое. Схема достаточно простая и наглядная; удивительно только, почему таких сайтов все еще довольно мало.
В главе 4, описывающей трансформации, давалось понятие порядка перекрытия фрагментов графики друг относительно друга (его еще называют z-координатой). В случае с перекрывающимися фильмами используется примерно такое же понятие, только называемое по-другому, а именно — уровень фильма. Отсчет уровней ведется, начиная с самого нижнего клипа (фильма) до самого верхнего. Фильмы с большим номером уровня находятся "выше" фильмов с меньшим номером и перекрывают их.
На этом сходство с порядком перекрытия исчерпывается, и начинаются отличия. Их три.
Во-первых, самым "нижним" всегда является фильм, изначально воспроизводящийся в проигрывателе Flash, — он имеет уровень 0. Все остальные фильмы, которые будут загружены как перекрывающиеся, находятся "выше" него, т. е. имеют более высокий уровень — 1, 2 и т. д.
Во-вторых, для обозначения уровня фильма используются не числа, а особые модификаторы, в состав которых входят номера уровней. Они возвращают ссылку на внешнюю анимацию соответствующего фильма и имеют вид _level<номер уровня>. Самый "нижний" фильм имеет модификатор _level0. Более "высокие" фильмы имеют модификаторы _level1, _level2 и т. д.
Мы можем использовать эти модификаторы для доступа к перекрывающимся фильмам. Например:
_level0.gotoAndPlay(1);
_levell.car.wheel.stop;
Перед тем как обратиться к перекрывающемуся фильму, находящемуся на каком-то уровне, нужно сначала его туда загрузить. Как это сделать, будет рассказано чуть позже.
В-третьих, мы можем загрузить какой-либо фильм на уровень, на котором уже имеется другой фильм. В этом случае загружаемый фильм заменит тот, что раньше был на этом уровне. Можно загрузить какой-либо фильм и на уровень 0 — в этом случае он заменит фильм, изначально загруженный в проигрыватель Flash.
Для загрузки перекрывающегося фильма используется действие loadMovieNum, аналогичное действию loadMovie. Формат его вызова
таков:loadMovieNum("<Интернет-адрес загружаемого файла>", <Уровень>);
Приведем два примера выражений, использующих действие loadMovieNum:
loadMovieNum("/videos/driving.swf", 0);
loadMovieNum("/images/ads/banner45.jpg", 2);
Первое выражение заменяет основной фильм фильмом driving.swf. Второе же выражение загружает рекламный баннер и помещает его над основным фильмом. (Непонятно, правда, зачем это нужно делать. Если только для испытания нервов зрителей.)
Для выгрузки перекрывающегося фильма используется действие unloadMovieClip. Вот формат его вызова:
unloadMovieNum (<Уровень выгружаемого клипа или изображения>);
Пример:
unloadMovieNum(_level2);
Это выражение убирает назойливо маячивший перед глазами рекламный баннер.
Загрузка звуков
Для загрузки звука из внешнего файла в формате MP3 (другие форматы не поддерживаются) следует воспользоваться методом loadSound объекта Sound. Вот формат его вызова:
<Звук>.loadSound(<Интернет-адрес или путь внешнего звукового файла>,<Потоковый звук>);
Первый параметр задает интернет-адрес звукового файла или его путь на локальном диске компьютера в строковом виде. Второй параметр — логический — задает, будет ли загружаемый звук потоковым (значение true) или звуком-сигналом (значение false). (О потоковых звуках и сигналах см. главу 17.)
Вот пример сценария, загружающего звуковой файл с использованием метода loadSound:
newSound = new Sound;
newSound.loadSound("sounds/background_music.mp3", true);
newSound.play;
Объект Sound поддерживает событие onLoad, возникающее по окончании загрузки звука. Это событие можно обработать с помощью функции-обработчика, принимающей единственный параметр. Если звук был успешно загружен, этот параметр примет логическое значение true. Соответственно, если проигрыватель Flash почему-то не смог загрузить этот звук, обработчику передается значение false.
Вот пример функции-обработчика события onLoad:
function onNewSoundLoad(success) {
if (success) {
newSound.play;
}
}
newSound.onLoad = onNewSoundLoad;
Файлы формата MP3, кроме собственно звука, могут хранить дополнительные данные — так называемые теги MP3. В этих тегах записываются, в частности, имя исполнителя, название альбома и песни, год выпуска, жанр и пр. Для доступа к этим тегам служит свойство ID3 объекта Sound. Оно возвращает ссылку на экземпляр объекта Object, свойства которого и содержат информацию о различных тегах MP3. Эти свойства возвращают, в частности: