Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Секреты разработки игр в Macromedia Flash MX - Макар Дж.

Макар Дж. Секреты разработки игр в Macromedia Flash MX — М.: КУДИЦ-ОБРАЗ , 2004. — 608 c.
ISBN 0-201-77021-0
Скачать (прямая ссылка): sekretirazrabotkiigr2004.djvu
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 210 >> Следующая

каждого из неподвижных шаров в массиве notMoving.
2. Для обнаруженного столкновения мы временно сохраняем в массиве
время этого, столкновения и имена шаров, вовлеченных в столкновение.
Вспомните это из скриптов независимого от кадров обнаружения
столкновений, которые мы разработали в гл. 5, "Обнаружение столкновений":
когда столкновение обнаружено, мы берем значение времени, которое истекло
от предыдущего кадра до времени столкновения. Если это число равно 0.2,
то прошла одна пятая кадра, прежде чем шары столкнулись. Мы здесь не
реализуем никаких реакций на столкновение; на этом шаге мы просто
собираем значения моментов времени и имена шаров.
3. Когда скрипт обнаружения столкновения сделан, мы сортируем массив
таким образом, что столкновение с наименьшим временем находится в массиве
на месте с индексом 0. Это столкновение, которое произошло первым.
4. Мы вычисляем реакцию на столкновение для первого столкновения,
которое произойдет. Поскольку это столкновение может отменить любое из
других столкновений, мы останавливаем скрипт здесь и начинаем его снова
(возвра^ щаемся к шагу 1).
Мы выполняем эти четыре шага в цикле до тех пор, пока столкновений на
столе нет или пока мы не прервем цикл по любым другим причинам.
466
Часть 2. Исследование основ
Функции
На этом этапе вашей карьеры как Flash-разработчика (или по крайней мере
пока как читателя этой книги) вы видели практически все функции, которые
обеспе- I чивают работу игры, или их версии. В этом разделе мы упомянем
большинство основных функций, в том числе что они делают, и в некоторых
случаях мы бу-1 дем рассматривать код ActionScript.
Откройте панель Actions и взгляните на код ActionScript в слое Actions.!
(Помните: мы все еще находимся в клипе game файла pool.fla, не
возвращаясь! в основную шкалу времени.) Прежде чем скрипт определяет
любые функции,* он вносит в список несколько строк кода инициализации
некоторых переменных I и объектов, которые будут использованы в игре. Вот
первые несколько строк:
1 soundOn =true;
2 radius = 8.5;
3 mass =1;
4 decay = . 98 ;
5 runPatch =0;
6 inPlay = f a 1 s e ;
Строка 1 просто создает переменную, которая контролирует воспроизведением
звука, определяет, включен он или нет. Она устанавливает значение
soundOnl в true. Если true, то, когда шары сталкиваются, звук
воспроизводится. Если false, то звук не воспроизводится. Мы не включаем в
этот файл переключатель on/off^ но, если вы решили добавить вашу
собственную кнопку переключателя, все, чти вам нужно сделать, - это
переключать значение переменной soundOn. В строке 2 мы создаем переменную
с именем radius. Это радиус бильярдного шара. Далей мы устанавливаем mass
(массу) шара в 1. Затем мы создаем переменную decayl которая используется
для замедления шаров с течением времени так, чтобы ошм в конечном счете
останавливались. В строке 5 мы устанавливаем значение) runPatch в 0. Она
используется в функции patch(), о которой мы поговорим позднее. Наконец,
мы устанавливаем значение inPlay в false. Эта переменная ис-1 пользуется
в событии onEnterFrame для определения, должны ли мы запуска-(tm) движение и
функции обнаружения столкновения.
Некоторые другие вещи происходят в коде ActionScript в этом кадре до
начаЧ ла определения функций. Мы создаем объект с именем game, который
будет им пользоваться для хранения большей части информации об игре. В
объекте дагтя мы создаем несколько других объектов, включая один для
каждого шара с на-* званиями от ball 1 до ЬаШО и один для кия с названием
stick.
Глава 18. Девять шаров
467
startGameQ
Теперь давайте взглянем на функцию startGame().
1 function startGame() {
2 f1agStopped("yes");
3 inPlay = false;
4 if (player == 1) {
5 game.myTurn = true;
6 } else {
7 game.myTurn = false;
8 }
9 sinkList= [1, 2, 3, 4, 5, 6, 7, 8, 9];
10 currentBall = sinkList[0];
11 game.moving = [];
12 game.notMoving = [];
13 г a с k ();
14 if (game.myTurn) {
15 ballInHand( "partial");
16 }
17 moveVariables ( ) ;
18 popup.gotoAndStop ( "game started");
19 if (game.myTurn) {
20 popup.msg.text = "The game has begun. It is your
turn. " ;
21 } e 1 s. e {
22 popup.msg.text = "The game has begun. It is your
opponent1s turn . ";
23 }
24 }
Эта функция вызывается, когда оба игрока вступают в игру и когда игра
перезапускается. Вначале вызывается функция flagStopped(). Она создает
переменную комнаты, сообщающую, что пользователь готов к отправке или
получению хода. Далее значение переменной inPlay устанавливается в false.
Эта переменная используется в событии onEnterFrame для определения того,
должна ли выполняться некоторая функция. Если false, функция не
выполняется. Она устанавливается в true при ударе шара-битка. Затем,
используя переменную player, мы определяем, чей сейчас ход. Если ход за
Фрэнком, мы устанавливаем значение game. myTurn в true в экземпляре игры
Фрэнка; в противном случае мы устанавливаем его в false.
Часть 2. Исследование основ
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 210 >> Следующая