33 Таймер і альтернатива таймером, code for games - блог про розробку ігор

Вітаю вас, друзі, сьогодні розповім про таку штуковини у флеш, як Таймер, яким я ніколи не користуюся Мені зручніше користуватися альтернативним способом. Звик А так, як вам буде зручніше, таким способом і будете користуватися.

Для того щоб створити таймер потрібно створити змінну типу Timer, наприклад так:
var timer: Timer = new Timer (5000, 3);
У дужках перше число "5000" - це затримка 5 секунд між спрацьовуваннями таймера. Друге число "3" - це кількість повторів.

Для таймера є 2 події:
TimerEvent.TIMER - спрацьовує при кожній ітерації таймера (при кожному повторі)
TimerEvent.TimerEvent.TIMER_COMPLETE - спрацьовує по завершенню таймера.

так само для таймера є різні методи, наприклад:
timer_name. strat () - запускає таймер
timer_name. stop () - зупиняє таймер
timer_name. reset () - обнуляє таймер.

Салют! Поясни, будь ласка, що використовують для появи супротивників на сцені в певний час? Наприклад вилетіло 2 противника, через 20 секунд інші з'являться, ще через 5 сек з'явиться бос і т.д. Чим зручніше за все користуватися? Може запустити таймер і відстежувати його тики до кінця гри або як то краще можна?

Напевно найпростіше буде, реалізувати один таймер від початку і до кінця кожного рівня і створити умови для спрацьовування на певній секунді (5, 20, 100 ...) Ось як тільки з кількістю бути ... Думаю потрібно буде для появи кожної пачки ворогів зробити функцію і в ній прописувати addChild і вказувати координати вражин?

не обов'язково секунді, можна і кадри. Коротше запускаєш таймер і при кліці по сцені робиш trace кадру. і там сам собі відзначаєш проміжки коли повинні вилазити нові вороги.
Пачки ворогів можна замулити як в уроці про сніг з'являється сніг. Можна для сусідніх кадрів додавати різних ворогів, щоб не писати складні функції. Можна додати 60 ворогів за 1 секунду при fps - 60. Це багато А ось в плані оптимізації складно сказати як краще. Поступова просадка частоти кадрів, або разова. Взагалі, по книзі Джоба Макара по as2.0, він говорив, що потрібно завантажити всю інфу про все заздалегідь в об'єкти. І при необхідності робити їх більш культурними та додавати картинку, а коли не потрібен, заморожувати і прибирати картинку. Щоб постійно не створювати заново. Наприклад, є об'єкт зберігає ширину, висоту координати, швидкість, ІІ і т.д. ворога. У потрібний момент ти додаєш картинку через addChild і актівіруешь його, коли він пішов зі сцени або убитий, просто прибираєш картинку, але не видаляєш інше. Коли буде потрібно знову, знову додаєш картинку, і може бути, міняєш йому координати. У плані оптимізації потрібно намагатися не лазити в бібліотеку, а все використовувати багато разів

Ще, як варіант, з обнуленням таймера, і додавання через прогалини часу. Тобто у тебе є порядок появи ворогів, і різниця між ними. "Наприклад вилетіло 2 противника, через 20 секунд інші з'являться, ще через 5 сек з'явиться бос". Вилетіло 2 противника на 5 секунді. Скинули таймер в 0. 20 секунд - 5 супротивників інших. Скинули таймер. 5 секунд - бос, скинули таймер. і т.д. І організацію для цього можна зробити цікаву) Але це по грі робиться. Буває робиш, як здається правильно, а потім в ході розробки, вже переробляєш на по-іншому.

Думаю варіант з обнуленням - саме воно Ось тільки як зробити щоб наприклад на кожній п'ятій секунді вилітали потрібні вороги після обнулення не дуже зрозуміло Якщо створити кілька функцій на спрацьовування таймера на 5-ій сек. вони ж відразу все запустяться)

if (timer == 5)
enemyMuve1 ();
enemyMuve2 ();
>

ти не зовсім зрозумів. "У тебе є порядок появи ворогів" тобто твоє умова if (timer == 5) не відслідковує порядок. Тут теж можна через масив закрити. 1 партія ворогів / проміжок часу від початку гри, 2 партія ворогів / проміжок від першої партії ворогів, 3 партія ворогів / проміжок від другої, 4 - бос / проміжок від третьої партії. Номер партії може бути індексом масиву. в ньому міститься час і щось ще (функція на додавання ворогів, купа різних функцій, список ворогів і т.п.). І при роботі таймера спочатку працюєш з елементом масиву 1. і якщо час збігається, то пускаєш 1 партію, обнуляє таймер, підвищуєш індекс масиву на +1, і так далі.