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

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

Ответ
 
BizzaroFukuro
MWS Hardcore
offline
Опыт: 2,178
Активность:
Утечки звуков
Собственно проблема в том, что звуки не удаляются вообще никак.
Функции KillSoundWhenDone(snd) и StopSound(snd,true,false) не помогают.
Карта прилагается.
Код:
function SecondHeartbeat takes nothing returns nothing
    local sound snd = CreateSound("HEART.wav",false,false,false,10,10,"")
    call SetSoundChannel(snd,0)
    call SetSoundVolume(snd,117)
    call SetSoundPitch(snd,1)
    call StartSound(snd)
    call KillSoundWhenDone(snd)
    set snd = null

    //call BJDebugMsg("Beat 2")
endfunction

function Trig_Heartbeat_Actions takes nothing returns nothing
  local timer t = GetExpiredTimer()
  local sound snd
  local integer i = 0

  loop
  exitwhen i > 11
     if t == udg_HeartbeatTimer[i] then
       set snd = CreateSound("HEART.wav",false,false,false,10,10,"")
       call SetSoundChannel(snd,0)
       call SetSoundVolume(snd,127)
       call SetSoundPitch(snd,1)
       call StartSound(snd)
       call KillSoundWhenDone(snd)

       call TimerStart(udg_HeartbeatTimer[i],1,false,null)
       call TimerStart(udg_HeartbeatTimer2[i],0.34,false,function SecondHeartbeat)

       //call BJDebugMsg("Beat 1")
     endif
  set i = i + 1
  endloop
  set t = null
  set snd = null
endfunction

//===========================================================================
function InitTrig_Heartbeat takes nothing returns nothing
  local integer i = 0
  set gg_trg_Heartbeat = CreateTrigger()

  loop
  exitwhen i > 11
    set udg_HeartbeatTrig[i] = CreateTrigger()
    call TriggerRegisterTimerExpireEvent(udg_HeartbeatTrig[i],udg_HeartbeatTimer[i])
    call TriggerAddAction(udg_HeartbeatTrig[i], function Trig_Heartbeat_Actions)
  set i = i + 1
  endloop
endfunction
Прикрепленные файлы
Тип файла: w3x Heartbeat.w3x (18.8 Кбайт, 13 просмотров )
Старый 15.06.2010, 17:15
Rewenger
The culprit will not die
offline
Опыт: 35,873
Активность:
Ну, я вот проверил (правда, вместо Heart.wav подставил другой звук смерти Бэтрайдера орков), сперва размер потребляемой памяти процесса варкрафта поднялся с 102 мб до 108.5 мб, после чего оставался примерно одинаковым; за то время число "утечки" превысило 200. Т.е. сурового эффекта утекания мной не наблюдалось.
Старый 15.06.2010, 17:41
Doc

offline
Опыт: 63,163
Активность:
BizzaroFukuro, проверял с помощью GetHandleId()?
Старый 15.06.2010, 17:44
BizzaroFukuro
MWS Hardcore
offline
Опыт: 2,178
Активность:
DoctorGester, да, в прикреплённой карте это всё есть тоже.

Цитата:
Сообщение от Rewenger
Т.е. сурового эффекта утекания мной не наблюдалось.
2 утечки за один сердечный ритм (причем у каждого из 12 игроков свой локальный ритм), а именно сколько их накопится после 10-15 минут игры, мне кажется вполне суровым эффектом.
Старый 15.06.2010, 17:47
Rewenger
The culprit will not die
offline
Опыт: 35,873
Активность:
BizzaroFukuro, если процесс не жиреет (или жиреет слабо), то, имхо, не так уж и страшно.

Отредактировано Rewenger, 15.06.2010 в 17:59.
Старый 15.06.2010, 17:51
BizzaroFukuro
MWS Hardcore
offline
Опыт: 2,178
Активность:
Rewenger, твоё имхо я уже понял.
Мне больше интересно, почему движок вара не может нормально удалять звуки?
Или всё-таки может, а я его неправильно курю?

Где все товарищи знатоки, или просто всем насрать на работу со звуком?

Отредактировано BizzaroFukuro, 20.06.2010 в 11:56.
Старый 16.06.2010, 10:29
BizzaroFukuro
MWS Hardcore
offline
Опыт: 2,178
Активность:
Всё же может хоть кто-нибудь ответит?
Старый 22.06.2010, 10:57
Ответ

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

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

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

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



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