Крайне не силён в jass, поэтому сильно не бейте. Нужно ли прописывать на случай не выполнения условия call DestroyTimer(t) или утечки нет?
P.S Пример чисто теоретический.
....
function Example1 takes nothing returns nothing
    local timer t=CreateTimer()
    if  udg_example == 1 then
    call  TimerStart(t, 1, false, function Example2)
    endif
    set t = null
endfunction
...

Принятый ответ

Никто не догодался?
if udg_example == 1 then
	call TimerStart( CreateTimer(), 1, false, function Example2)
endif
Нет ну рили, нахрена тут переменная?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Этот комментарий удален
0
27
7 лет назад
Отредактирован MpW
0
В данный момент нет утечек. В памяти остаётся таймер. Но удалять его сейчас не нужно, удаляют после завершения работы таймера, например в функции Example2 (короче как у тебя написано через 1 минуту). Если мы удалили бы сейчас, то запуск таймера не пройзошел бы (ибо таймера больше нет).
0
2
7 лет назад
Отредактирован Lucker
0
я имею ввиду, что если udg_example не равен 1 то получается что таймер создан, но не запущен, нужно ли его удалять DestroyTimer(t) или t = null достаточно?
1
27
7 лет назад
Отредактирован MpW
1
Можно его и не создавать
local timer t //объявляем локалку
If udg_example == 1 then //если условие прокатывает
set t = CreateTimer() //создаём таймер
call TimerStart(t,1.0,false, function Example2) //запускаем его
endif
set t = null //обнуляем
0
16
7 лет назад
Отредактирован avuremybe
0
Steal nerves, тогда уж и обнуление в тот же иф загонять. Зачем выполнять лишние действия, если таймер не создан?
local timer t
If udg_example == 1 then
set t = CreateTimer()
call TimerStart(t,1.0,false, function Example2)
set t = null
endif
0
27
7 лет назад
Отредактирован MpW
0
когда уже можно удалить (код)
//в функции Example1 запускаем таймер. прошла 1 секунда, и запускается Example2

function Example2 takes nothing returns nothing
local timer t=GetExpiredTimer() // Истекший ( запущенный ) таймер 
.....//делаем что-то, может быть по номеру хэндла таймера достаем из хэша что-то
call DestroyTimer(t) //тогда можно уже удалить
set t = null
endfunction

function Example1 takes nothing returns nothing
local timer t
If udg_example == 1 then
set t = CreateTimer()
call TimerStart(t,1.0,false, function Example2)
set t = null
endif
endfunction
У тебя должна быть библиотека в JNGP. Мне пришлось вспоминать нативку GetExpiredTimer() jass.wikia.com/wiki/Functions
avuremybe, ну ошибся, не существенно
0
2
7 лет назад
0
Steal nerves:
Можно его и не создавать
local timer t //объявляем локалку
If udg_example == 1 then //если условие прокатывает
set t = CreateTimer() //создаём таймер
call TimerStart(t,1.0,false, function Example2) //запускаем его
endif
set t = null //обнуляем
ок, спасибо
2
32
7 лет назад
Отредактирован quq_CCCP
2
Никто не догодался?
if udg_example == 1 then
	call TimerStart( CreateTimer(), 1, false, function Example2)
endif
Нет ну рили, нахрена тут переменная?
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.