![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2017
Сообщений: 6
|
Ребята! Подскажите, пожалуйста, по звуку - утекает память из-за звука. Звук останавливаю, ссылку на канал удаляю, но память похоже не чистится. Есть ли какие-то трики? На всякий случай кидаю кусок по остановке звука у меня в коде:
_soundChannel.removeEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); _soundChannel.stop(); _soundChannel = null; Буду рада любым советам и ответам! |
|
|||||
|
Регистрация: Feb 2017
Сообщений: 6
|
Грузятся mp3-шки, и ещё часть звука упакована в swf-ки
|
|
|||||
|
Регистрация: Feb 2017
Сообщений: 6
|
нет, не потоковый
|
|
|||||
|
Почему вы решили, что память утекает? Сборщик мусора не чистит память сразу же, как только вы присвоите null. Выложите весь код целиком, или попробуйте собрать минимальный пример, демонстрирующий утечку.
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Во флеше со звуком все плохо, да. Память там утекает изза того, что для каждого вызова sound.play() создается новый звуковой канал. Невозможно сохранить ссылку на старый. Мне этот механизм тоже дико не нравится и доставляет много проблем, но увы, с этим ничего не поделать.
Потом она конечно отчищается сборщиком мусора, но если каналов успевает накопиться много, то приложение в этот момент "фризит"
__________________
Ко мне можно и нужно обращаться на ты) Последний раз редактировалось caseyryan; 06.02.2017 в 17:20. |
|
|||||
|
Регистрация: Feb 2017
Сообщений: 6
|
caseyryan, вот меня и смущает пересоздание потоков каждый раз после паузы туда-сюда. Утечка там, где снимается с паузы, в моей игре это место, когда персонаж ходит, и открываешь какое-либо окно поверх персонажа, то звуки ставятся на паузу (птицы, шаги, строительство идёт, много звука). Эту логику я менять не могу, так задумано. Просто выключать не могу громкость тоже, потому что анимации, к которым привязаны все звуки, тоже ставятся на паузу. Ну и вот если открывать закрывать окошки, то естественно пауза в звуках (вернее последующее снятие с паузы) вызывает создание нового потока. Может можно как-то всё же пооптимизировать работу звуков? Как считаете?
Добавлено через 11 минут Tails, самый обыкновенный запуск, запуск звука _soundChannel = _sound.play(_pausePosition, getLoopsCount(), _audioTransform.soundTransform); Постановка на паузу такая - _playbackComplete = false; _pausePosition = _soundChannel.position; _currentState = AudioState.ACTUAL_PAUSED; clearChannel(); Последний раз редактировалось juliaplayrix; 07.02.2017 в 12:00. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
Цитата:
|
|
|||||
|
Регистрация: Feb 2017
Сообщений: 6
|
undefined, я имела ввиду то, что звук привязан к анимациям логически, то есть мне нужно всё равно запускать с того места, где поставили анимацию на паузу, иначе звук оторван по логике будет от своей анимации
Добавлено через 2 минуты И так как нативного метода паузы нет, то я при паузе запоминаю место - и потом при вызове плэй играю звук с того места - И снова создаётся поток |
|
|||||
|
апи звука действительно не удобное, без своих велосипедов или сторонних библиотек, пользоваться им практически невозможно.
Так в чём конкретно проявляется утечка, у вас не очищается память? Вы пробовали смотреть дебаггером состояние массивов, может быть, они не очищаются где-то у вас.
__________________
Дети не должны знать о своих родителях |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|