XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
PiCkUpEr_AsT

offline
Опыт: 1,060
Активность:
оптимально ли использовать функцию PolledWait()?
оптимально ли использовать функцию
Код:
PolledWait()?

если нет, то каким кодом можно создать ожидание? можно пример пожалуйста

PiCkUpEr_AsT добавил:
всё, нашел частично ответ в поиске
Везде советуют таймеры, теперь вопрос, у Айсфрога все "таймеры" сделаны через [cjde]TriggerRegisterTimerEvent()[/code] почему? так лучше что ли?
Старый 04.07.2011, 13:02
Hanabishi
COOL STATUS
offline
Опыт: отключен
Нет, всё это фигня, надо делать нормальный таймер.
Hanabishi добавил:
PolledWait это вообще полная хрень
function PolledWait takes real duration returns nothing
    local timer t
    local real  timeRemaining

    if (duration > 0) then
        set t = CreateTimer()
        call TimerStart(t, duration, false, null)
        loop
            set timeRemaining = TimerGetRemaining(t)
            exitwhen timeRemaining <= 0

            // If we have a bit of time left, skip past 10% of the remaining
            // duration instead of checking every interval, to minimize the
            // polling on long waits.
            if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then
                call TriggerSleepAction(0.1 * timeRemaining)
            else
                call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
            endif
        endloop
        call DestroyTimer(t)
    endif
endfunction
Старый 04.07.2011, 15:14
DualShock

offline
Опыт: 5,023
Активность:
PiCkUpEr_AsT:
можно пример пожалуйста
((код jass
function B takes nothing returns nothing
local timer q=GetExpiredTimer()
call PauseTimer(q)
call DestroyTimer(q)
set q=null
endfunction
function A takes nothing returns nothing
local timer q=CreateTimer()
call TimerStart(q,5.,false,function B)
set q=null
endfunction
))
Старый 11.08.2011, 19:54
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Если лень осваивать таймеры (хотя этим нужно заняться!), то можешь пользоваться этой функцией:
function delay takes real duration returns nothing
    local timer t=CreateTimer()
    call TimerStart(t,duration,false,null)
    loop
        exitwhen TimerGetRemaining(t)<=0.25
        call TriggerSleepAction(0.001)
    endloop
    call DestroyTimer(t)
    set t=null
endfunction
Она без утечек. Но не стоит пользоваться ей в циклах. Для этого используются таймеры.
Старый 11.08.2011, 22:26
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Hellfim, теже яйца, только в профиль ж.

Цитата:
Сообщение от Hellfim
TriggerSleepAction(0.001)


На сколько я помню, эта функция реально работает со значениями не менее 0.125.
Старый 12.08.2011, 01:37
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:58.