Alonix
*null*
offline
Опыт:
26,861Активность: |
Таймеры
Иногда в Академии задают вопросы о таймерах, но статьи на которую можно послать нигде нет. Вот я и решил написать статью о таймерах.
ТаймерыНачнем с того, что же такое таймер? Таймер-(англ. timer < time время) — прибор производственно-технического, военного или бытового назначения, в заданный момент времени выдающий определённый сигнал, либо включающий — выключающий какое либо оборудование через своё устройство коммутации электроцепи(материал википедии).Конечно,к нашему случаю это не относится.У нас не никакого прибора-только триггры.Но задача схожа с обычным таймером.
Создание таймераСделать таймер очень просто. Сначала создаем переменную (пусть будет t) типа "таймер".После сделаем событие при котором создастся таймер. Сделали? Если да, то в триггерах выбираем действие "Обратный отсчет - Start timer".Видим следующее:
Нажимаем на "Timer" и выбираем нашу переменную "t".Нажимаем на "Однократный" и видим выбор:"Однократный" и "Многократный".Однократный таймер действует только один раз, то есть если таймер истечет, то отсчет заново не пойдет. А если вы выберите "Многократный",то все наоборот - после истечения таймер поведет отсчет заново. Вместо "30 seconds"(по умолчанию) ставим время таймера. Уфф, первое действие мы сделали. Но это только начало. Итак, продолжим...
Создание окна таймераПосле создания самого таймера начинаем создавать для него окно. Ведь как мы увидим таймер без окна, в котором он будет показываться? Никак! Поэтому и нужно создавать окно для таймера. Создаем переменную типа "окно таймера".Назовем его "window".Далее действие "Обратный отсчет - Create timer window",и видим это:
Вместо (Last started timer) можно выбрать наш таймер "t",а можно оставить как есть - это зависит от того, как вы используете таймеры. Далее клацаем на "Title" и пишем название для таймера, которое будет выше самого отсчета. После присваиваем переменной "window" значение последнего созданного окна таймера(для этого используем "Set variable").Вот и сделано еще одно действие. Переходим к следующему...
Форматирование таймераПреступим к форматированию таймера. Кто не знает что такое форматирование - просим пройти сюда.А те, кто знает читаем дальше. Форматировать можно 3 вещи: название таймера(Change timer window title),цвет названия(Change timer window title color) и цвет отсчета(Сhange timer window time color).Во всех трех действиях есть общее - строка "Change the того что нужно of (Last created timer window)".Вместо "Last created timer window" выбираем переменную "window" или ту, что вы используете. Все эти действия должны быть обязательно после создания окна таймер, не раньше! Надеюсь, вы поняли, что можно изменять в каждом из действий. Поняли? Тогда переходим к следующему процессу...
Показ таймераПосле создания не спешите радоваться - таймер в игре еще не показан, ведь его надо еще показать! Для этого есть специальные действия, которые находятся в "Обратном отсчете".Это "Show/Hide Timer Window" и "Show/Hide Timer Window For Player".Они похожи, вот только второе показывает таймер для отдельного игрока(или группы игроков),а первое для всех без исключения. Вместо (Last created timer window) ставим нашу подругу-переменную "window".Остальные настройки понятны.
Истечение таймераВот наш таймер готов. Но что, если ты хочешь сделать действие, которое сработает по истечении таймера? Тогда на помощь тебе приходит событие "Время - Timer expiries":
Это событие срабатывает, когда наш таймер истекает. Вместо "Timer" выбираем наш таймер "t".А далее - дело вкуса.
Дополнительные действия и событияОстались действия и события, не рассмотренные мною ранее. Это "Pause timer" и "Destroy timer window".Для чего нужно "Pause timer"?Этим действием можно останавливать и возобновлять течение отсчета таймера. Это можно использовать для всяческих интересных действий. Это уже вы можете придумать сами. Но вы зададите мне вопрос:"для чего нужно действие "Destroy timer window"?.Это действие удаляет окно таймера. Обычно его используют триггере с событием "Время - Timer expiries" при однократном таймере. Главное-окно таймера не может быть показано при событии "Map Initialization"! Ну вот вроде все. Если хотите чем-то поделиться или поправить мою ошибку - пишите. |
01.06.2010, 21:21 | #1
+0/−1
Профиль |
Приват |
Поиск |
IP: Записан
|
StoneHeartis
Kicked by ScorpioT1002
offline
Опыт:
1,009Активность: |
Kakashi23, диалоги и таймеры в пермешку, что не есть гуд. Да и статья, мягко говоря, ненужная. |
01.06.2010, 22:05 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
и устаревшая. хуже гуи могут быть токо гуи-таймеры |
01.06.2010, 22:09 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Alonix
*null*
offline
Опыт:
26,861Активность: |
StoneHeartis, читай начало.Если ты знаешь-то это хорошо.Если нет-то в двойне лучше :D!
Kakashi23 добавил:
Найди мне здесь еще одну статью про таймеры и я признаю твои слова. |
01.06.2010, 22:11 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
статья про таймеры попросту не нужна. существует timer api от близов описанный в common.j, и он по большому счету в пояснениях не нуждается. единственное стоит отметить несколько фактов - таймер создает новый поток, предотвращение срабатывания таймера последний раз при уничтожении итп |
01.06.2010, 22:12 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Alonix
*null*
offline
Опыт:
26,861Активность: |
agentex, тебе тоже надо прочитать первое предложение
|
01.06.2010, 22:14 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
покажи хоть одну тему где просят научить юзать таймер З.Ы. я не против статьи, но она одназначно должна быть выполнена на другом уровне. иначе гуи - мапперов будет становиться все больше.. что печально. |
01.06.2010, 22:15 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Alonix
*null*
offline
Опыт:
26,861Активность: |
|
01.06.2010, 22:36 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Уг. Это статья не про таймеры, а про окна таймеров. Таймеры обычно используются по другому. |
01.06.2010, 23:26 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
дописать (чтобы было полезно, а не что-то странное):
|
01.06.2010, 23:55 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Alonix
*null*
offline
Опыт:
26,861Активность: |
vsparker, если знаешь что добавить-пиши мне в личку.Я добавлю.
Смотря кто и как их использует. |
02.06.2010, 08:58 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
Kakashi23, написать за тебя статью? пожалуй нет =) |
02.06.2010, 13:43 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
по хорошему таймеры нужны для запуска функций в большинстве случаев. Статья ни о чем. топикстартер глобально не шарит) И да, это пропаганда ненужного гуи. |
02.06.2010, 14:15 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Статья говно. Как увидел первые ошибки форматирования в первом абзаце, пропало желание читать. В базе такой статьи не будет.
Раздел "Мультиприменение" этой статьи доступно частично объясняет роль таймеров в коде warcraft III: xgm.ru/project.php?id=100&page=w3_special_programming В принципе, это уже все знают. А кто не знает - не хочет этого узнавать) |
02.06.2010, 14:19 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
agentex
offline
Опыт:
34,534Активность: |
Вот и я о томже. Изолировать таких надо |
02.06.2010, 14:33 | #15
+2/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Alonix
*null*
offline
Опыт:
26,861Активность: |
Ну вы блин...даже не знаю что сказать...я старался,тратил свое время,а вы...вы неуважаете чужой труд!Хоть бы написали:"Молодец,что написал такую статью.Но для статьи это слабовато.Но все равно молодец!".Да пошли вы все...закройте тему! [+] замечание от XimikS: оскорбление отписавшихся в теме. Не каждый труд полезен)
|
02.06.2010, 16:43 | #16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
Kakashi23, доработай, а не ной. |
02.06.2010, 16:50 | #17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
я не твоя мама, чтобы хвалить всюду ) но дело в том, что тут всё строилось на изначально неполезных доводах |
02.06.2010, 17:36 | #18
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
учите jass. Закрыто |
03.06.2010, 01:11 | #19
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|