Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
материал. часть2 / Розенцвейг_Adobe_Flash_Создание аркад, головоломок и других игр с помощью ActionScript.rtf
Скачиваний:
52
Добавлен:
11.02.2016
Размер:
9.87 Mб
Скачать

Подготовка ролика

После того как вы поместили 10 экземпляров клипа на рабочее поле и присвоите песням имена в первом кадре главной временной шкалы, осталось добавить звук.

Прежде всего, импортируем 10 песен в библиотеку ролика и присвоим им имена, начиная с "song1" и заканчивая "song10". После импорта каждого звукового файла необходимо изменить его свойство связи таким образом, чтобы он был включен в создаваемый. swf‑файл. Для каждой песни требуется создать идентификатор и поставить флажок напротив свойства Export for ActionScript. Соответствующее диалоговое окно показано на рис. 6.8. Его можно вызвать из меню Options окна Library.

Рисунок 6.8. Диалоговое окно Symbol Linkage Properties позволяет включать звуки в swf‑файл, даже если их нет в главной временной шкале

К сожалению, во Flash нет возможности использования внешних звуковых файлов. Единственным способом создать подобный музыкальный автомат будет импорт всех песен и включение их в swf‑файл. Будем надеяться, что в следующих версиях программы появится возможность доступа к внешним звуковым файлам и их воспроизведения.

Создание кода

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

song = new Sound();

song.attachSound("song1");

song.start();

Функция playSong должна выполнять еще несколько действий. Прежде всего, останавливать воспроизведение предыдущей песни. Это осуществляется при помощи команды stop. Предположим, что предыдущая песня содержится в глобальной переменной song и воспроизводится в данный момент. Приведем простой вариант функции:

function playSong(songnum){

// Останавливаем воспроизведение предыдущей песни.

song.stop();

// Проигрываем новую песню.

song = new Sound ();

song.attachSound( "song"+songnum);

song.start();

}

Осталось добавить еще один специальный эффект – подсвечивание названия выбранной песни. Клип каждого выбираемого элемента содержит два кадра: без подсветки и с подсветкой. На рис. 6.9 изображен музыкальный автомат с подсветкой выбранного элемента.

Рисунок 6.9. Музыкальный автомат воспроизводит песню под номером 2

Перед запуском воспроизведения каждой песни необходимо убедиться в том, что подсветка всех песен выключена, а затем включить подсветку только выбранной песни:

function playSong(songnum) {

// Останавливаем воспроизведение предыдущей песни.

song.stopO;

// Убираем подсветку.

for(i=1;i<=10;i++) {

this[i].gotoAndStop(1);

}

// Проигрываем новую песню.

song = new Sound();

song. attachSound("song"+songnum);

song.start();

// Включаем подсветку.

this[songnum].gotoAndStop(2);

}

Ролик можно просмотреть на Web‑сайте, запустив файл Jukebox.fla.

Другие возможности

Сценарий, рассматриваемый в данном разделе, выполняется независимо от дизайна музыкального автомата. Ваше устройство может быть похоже на напольный музыкальный автомат или совсем не походить на него. Вы даже можете создать музыкальный автомат с многочисленными экранами, представляющими различные группы песен. Кнопки «Forward» (Вперед) и «Back» (Назад) используются для перехода от кадра одной песни к кадру другой песни.

Аналоговые часы

Исходный файл: Simpleclock.fla, Betterclock.fla

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

Задача проекта

Время, запрограммированное в компьютере пользователя, должно отображаться в виде настенных или наручных часов. Часы должны иметь часовую, минутную и секундную стрелки. Лучше сделать часы необычными и в качестве стрелок использовать не простые линии, а какой‑нибудь клип.

Подход

Прежде чем создавать часы, необходимо научиться работать с объектом Date. Именно он содержит текущее время, доступное для отображения.

Использование объекта Date

Объект Date можно представить как небольшой массив, содержащий некоторую информацию о текущем моменте времени. При создании объекта Date за основу берется текущее время, установленное на компьютере пользователя.

Внимание!

Не стоит полагаться на точность времени, установленного на компьютере пользователя. Вы удивитесь тому, сколько людей имеют неточные часы. Тем не менее я обычно не задумываясь использую эти часы, особенно для игр. Если неправильно указано время отправки электронного письма, это может привести к проблемам, для flash‑ролика точность времени не так важна.

Объект Date включает следующие элементы: число, месяц, год, часы, минуты и секунды. Для вывода любого из них необходимо использовать соответствующую функцию: getDate(). Приводимая ниже программа обработки содержит все функции, которые используются для получения информации из объекта Date:

on (release) {

now = new Date();

trace("toString:" + now.toString());

trace("getDate:" + now.getDate());

trace("getDay:" + now.getDay());

trace("getFullYear:" + now.getFullYear());

trace("getHours:" + now.getHours());

trace("getMilliseconds:" + now.getMilliseconds());

trace("getMinutes:" + now.getMinutes());

trace("getMonth:" + now.getMonth());

trace(getSeconds:" + now.getSeconds());

trace("getTime:" + now.getTime());

trace("getTimezoneOffset:" + now.getTimezoneOffset());

trace("getYear:" + now.getYear());

trace("getUTCDate:" + now.getUTCDate());

trace("getUTCDay:" + now.getUTCDay());

trace("getUTCFullYear:" + now.getUTCFullYear());

trace("getUTCHours:" + now.getUTCHoursO);

trace("getUTCMilliseconds:" + now.getUTCMilliseconds());

trace("getUTCMinutes:" + now.getUTCMinutes());

trace("getUTCMonth:" + now.getUTCMonth());

trace("getUTCSeconds:" + now.getUTCSeconds());

}

Следует обратить внимание на несколько моментов. Все функции UTC подразумевают, что система пользователя настроена на соответствующую временную зону. Для того чтобы получить всеобщее (по Гринвичу) время, необходимо добавить или вычесть определенное количество часов. Результатом выполнения функции getTime будет количество миллисекунд с 1 января 1970 года. Функция day обозначает день недели и задается числом от 0 до 6. Месяц представляет собой число от 0 до 11. Число выбирается из диапазона от 1 до 31. Возможно, все это трудно для понимания и запоминания, однако данные функции аналогичным образом задаются и в других языках программирования, например C и JavaScript.

Вот результат выполнения всех функций trace:

toString:Sat Oct 14 18:47:06 GMT‑0600 2000

getDate:14

getDay:6

getFullYear:2000

getHours:18

getMilliseconds:0

getMinutes:44

getMonth:9

getSeconds:7

getTime:971570647000

getTimezoneOffset:360

getYear:100

getUTCDate:15

getUTCDay:0

getUTCFullYear:2000

getUTCHours:0

getUTCMilliseconds:0

getUTCMinutes:44

getUTCMonth:9

getUTCSeconds:7

Вы можете задать любой элемент объекта Date. Каждая функция, начинающаяся с get, имеет соответствующую ей функцию, начинающуюся с set. К примеру, для установки часа используется функция setHour(newHour). Имейте в виду, что это приведет к изменению только объекта Date, к которому вы обратились, а не системных часов пользователя. При создании нового объекта Date время в нем будет установлено в соответствии с системными часами.

Соседние файлы в папке материал. часть2