(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Уроки Flash: Создаем Metro Siberia Undeground (часть 1)

Источник: demiart
Emanuele Ferontano (Перевод: Stasan)

Недавно мне на глаза попалась игра Metro Sibera Underground (MSU в дальнейшем). Игра обладает очень простой графикой, и в ней задействована всего лишь одна кнопка. Пользователь нажимает на кнопку мышки, включается двигатель и корабль поднимается вверх. Если кнопка не нажата на корабль действует сила тяжести.

Создаем Metro Siberia Undeground.Часть 1. *

Игра обладает размытой графикой.

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

Нам понадобиться всего два Movie Clip"a. Повернутый вправо треугольник символ назовем ship, и квадрат его назовем smoke. Для обоих символов ставим Linkage.

На главной сцене, в первом кадре пишем такой вот код:

CODE

1. import flash.filters.GlowFilter;
2. var ship_filter:GlowFilter = new GlowFilter(0x00ff00, 0.8, 4, 4, 2, 3, false, false);
3. var smoke_filter:GlowFilter = new GlowFilter(0xff0000, 0.8, 4, 4, 2, 3, false, false);
4. gravity = 0.1;
5. thrust = 0.25;
6. yspeed = 0;
7. xspeed = 5;
8. smoke_interval = 10000;
9. frames_passed = 0;
10. engines = false;
11. _root.attachMovie("ship", "ship", _root.getNextHighestDepth(), {_x:150, _y:200});
12. ship.filters = new Array(ship_filter);
13. ship.onEnterFrame = function() {
14.     if (engines) {
15.         yspeed -= thrust;
16.         smoke_interval -= 0.25;
17.     }
18.     yspeed += gravity;
19.     this._y += yspeed;
20.     angle = Math.atan2(yspeed, xspeed);
21.     this._rotation = angle*180/Math.PI;
22.     frames_passed++;
23.     if (frames_passed>=smoke_interval) {
24.         sm = _root.attachMovie("smoke", "smoke"+_root.getNextHighestDepth(), _root.getNextHighestDepth(), {_x:this._x-2, _y:this._y});
25.         sm.filters = new Array(smoke_filter);
26.         sm.onEnterFrame = function() {
27.             this._x -= xspeed;
28.             this._alpha -= 2;
29.             if (this._alpha<=0) {
30.                 this.removeMovieClip();
31.             }
32.         };
33.         frames_passed = 0;
34.     }
35. };
36. _root.onMouseDown = function() {
37.     engines = true;
38.     smoke_interval = 10;
39. };
40. _root.onMouseUp = function() {
41.     engines = false;
42.     smoke_interval = 100000;
43. };



Ну что ж давайте разбираться, что к чему. Ниже идет номер строки в коде и комментарий к ней.

1. Импортируем библиотеку необходимую для фильтра Glow.
2-3. Определяем параметры фильтра Glow для корабля и дыма.
4.Устанавливаем значение силы тяжести.
5.Устанавливаем значение толчка.
6-7. Устанавливаем значение скорости перемещения по x и y. Скорость по x будет оставаться неизменной.
8. Устанавливаем значение переменной, которая отвечает за интервал появления клубов дыма друг за другом.
9.Переменная счетчик определяющая, сколько кадров пошло с тех пор как был выпущен последний клуб дыма.
10. Необходимо для проверки используется ли двигатель.
11.Вставляем корабль в игру.
12.Применяем к кораблю фильтр glow.
13.Функция ship будет выполняться каждый кадр.
14.Проверка использует ли игрок двигатель.
15.Уменьшаем yspeed поскольку отрицательные значения заставляют двигаться корабль вверх.
16.Уменьшаем интервал появления дыма т.к. игрок жмет на газ.
18. Прибавляем силу тяжести к скорости перемещения по y.
19.Обновляем место положения корабля по у.
20.Расчитываем угол корабля, используя тригонометрию.
21.Обновляем значение поворота корабля.
22.Увеличиваем переменную, отвечающую за кол-во прошедших кадров.
23.Проверка, не пора ли добавлять дым.
24.Добавляем дым.
25.Применяем фильтр Glow к дыму.
26.Функция smoke будет работать каждый кадр.
27.Обновляем положение дыма по x.
28.Делаем дым более прозрачным.
29-31. Когда дым становится полностью прозрачным, удаляем его.
33.Обнуляем переменную ответственную за интервал вставки дыма.
36-39.Когда пользователь нажимает кнопку мыши, включаем двигатель, а значение интервала дымопоявления ставим равным 10.
40-43.Когда пользователь отпускает кнопку мыши, вырубаем двигатель а интервал равен 100000.

Вот и все.

Если кораблика не видно, значит он "улетел вниз". Вам нужно держать кнопку мышки и ждать или обновить страничку.



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 01.06.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
GFI LanGuard подписка на 1 год (25-49 лицензий)
ABBYY Lingvo x6 Английская Профессиональная версия
Quest Software. TOAD for SQL Server Xpert Edition
Panda Internet Security - ESD версия - на 1 устройство - (лицензия на 1 год)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Программирование в AutoCAD
Компьютерный дизайн - Все графические редакторы
Утиль - лучший бесплатный софт для Windows
3D и виртуальная реальность. Все о Macromedia Flash MX.
Краткие описания программ и ссылки на них
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100