среда, 5 января 2011 г.

Урок 7. Создаём простую игру

Урок 7
Создаём простую игру

На этом уроке создадим простую игру на подобие этой:




Скачайте исходник, без него Вы можете не понять урок!

Для этого мы будем использовать классы. Класс пули и класс бота.
1. Создаём новый документ ActionScript 3.0.
2. Рисуем:
1. То, что будет стрелять
2. Бота
3. Пулю
3. Експротируем для ActionScript пулю и бота.
4. То, что у Вас будет стрелять, добавляем на сцену и называем hero (герой), остальное удаляем со сцены, оно сохранится в библиотеке (Ctrl+L).
Сейчас сделаем вращение героя. Во-первых, в первом кадре создадим функцию “новая игра” и функцию вращения:

var radians2:Number=180/Math.PI;

new_game();
function new_game(){
hero.addEventListener(Event.ENTER_FRAME,rotation_hero);
}
function rotation_hero(e:Event){
 hero.rotation=Math.atan2(mouseY-hero.y,mouseX-hero.x)*radians2;
}

Запустите. Если всё сделано правильно, то hero будет крутиться за мышкой. Кстати, поместите его в центр экрана и сделайте размер окна (Ctrl+J) желательно квадратным, например, 500x500.
Теперь сделаем функцию выстрела:

function new_game(){
hero.addEventListener(Event.ENTER_FRAME,rotation_hero);
hero.bulet_container=new Sprite();
addChildAt(hero.bulet_container,0);
}
function shot(e:MouseEvent){
 var Bullet=new bullet(hero,stage);
 hero.bulet_container.addChild(Bullet); 
}

Так как hero – это объект, то мы можем присваивать ему свои переменные и функции. В bullet_container будут добавляться все пули, чтобы их было легче удалить.
Я не буду расписывать все действия, а отрывками те, которые Вы ещё не знаете из моих предыдущих уроков. Скорее даже просто комментировать некоторые строки кода.

var timer_bot:Timer=new Timer(2000);
timer_bot.addEventListener(TimerEvent.TIMER, crate_new_bot); 

Это создаётся таймер, очень похож на SetInterval, только с большим количеством различных функций.

hero.update_TextField=function(){
 health_txt.text=hero.health;
 score_txt.text=hero.Score;
};

Как уже было сказано раньше, у объектов могут быть свои функции, это была запись одной из них.

timer_bot.start();

это строка запускает таймер timer_bot :)

for (var i:int=0; i<hero.bot_container.numChildren; i++) {
 hero.bot_container.getChildAt(i).self_destruction();
}

numChildren – это количество Child (addChild) в hero.bot_container. getChildAt(i) – это ссылка на объект, находящийся в hero.bot_container. с помощью такого обращения мы можем выполнять public функции и брать значения public переменных этого объекта. В данном случае вызывается функция self_destruction().

new_game_bt.visible=true;

visible – это виден объект или нет. То же самое, что и alpha = 1 и alpha = 0, но должно работать быстрее.

timer_bot.delay-=10;

delay – задаётся , когда создаётся таймер var timer_bot:Timer=new Timer(2000); соответственно delay таймера timer_bot  будет равен 2000.

Остальное, которое в классах я объясню в комментариях, иначе урок вышел бы очень объёмным. Для этого скачайте исходник.

2 комментария:

  1. Очень интересно,только можно поподробнее описывать все дейсвия в коде)

    ОтветитьУдалить
  2. Всё верно, если ты делаешь урок, так делай его, если же делаешь ОБЗОР урока, так и пиши, это проще, чем отписывать свою лень отговорками... хотя это странное проявление лени... не заканчивать начатое.
    Урок вышел бы объемный? вообще, именно на этом основывается понятие УРОК, у тебя это ОБЗОР урока, или как привыкли многие выражение использовать - demo-версия (урока).

    ОтветитьУдалить