Спонсор запису:
Толковое поисковое продвижение сайтов от SeoProfy
Створюючи практично будь-яку програму в середовищі ActionScript, програміст рано чи пізно стикається з необхідністю вимірювати час. В іграх ця функція може бути особливо корисною, коли потрібно створити затримку між діями персонажа, встановити інтервал між анімаціями, вибрати час “народження” (respawn) ворогів, додати в гру таймер зворотнього відліку тощо.
Наприклад, в грі Turtle Dreams to Fly, розробкою якої я зараз активно займаюся, головний герой має кілька “активних умінь”, які діють протягом 2-5 секунд. Але як точно виміряти цей час?
У процедурних мовах програмування колись існував простий метод паузи, який встановлював часовий інтервал між двома діями. В інших мовах для вимірювання часу потрібно створювати власні схеми числення чи інструкції циклів for чи do…while.
Втім, у ActionScript інструкції циклів діють з максимальною швидкістю, яку дозволяє комп’ютер. А це значить, що на сучасних комп’ютерах навіть цикл зі ста тисяч ітерацій буде виконаний менше, ніж за секунду. Окрім того, на різних комп’ютерах код виконуватиметься з різною швидкістю. Тож виникає потреба надійного механізму відліку, який працюватиме однаково не залежно від конфігурації комп’ютера.
В ActionScript 3 для цих потреб був створений клас Timer.
Заради справедливості варто відзначити, що керувати часовими інтервалами у Flash можна і з допомогою більш простого методу setInterval, який прийшов з другої версії мови, але навіть розробники ActionScript 3 не рекомендують його використовувати. До AS3 цей метод потрапив внаслідок необхідності підтримувати зворотню сумісність (адже у AS2 класу Timer не існувало).
Тому в рамках цієї статті я не зупинятимусь на методі setInterval і постараюся якомога детальніше описати новий потужний клас, який дозволяє робити з часом практично все, що завгодно – Timer.


