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