|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Утечка памяти при конвертации звука из ByteArray в Sound.
Мне необходимо загрузить локальный MP3 файл в объект Sound. Я использую FileReference для выбора файла и получения ByteArray звука и стороннюю библиотеку MP3FileReferenceLoader для конвертации звука из ByteArray в Sound, которая программно делает SWF файл с [Embed] и возвращает объект Sound.
Проблема в том, что когда я пишу: То есть сохраняю ссылку на звук в экземлпяр класса TrackVO. То память выделенная под SWF файл не освобождается. Но если убрать эту строку, то все будет нормально. Память под SWF выделится и освободится при получении объекта Sound. Смотрите скриншоты с памятью. Как это исправить? Главный класс: package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.net.FileFilter; import flash.net.FileReference; import org.audiofx.mp3.MP3FileReferenceLoader; import org.audiofx.mp3.MP3SoundEvent; public class Test extends Sprite { private var _fr:FileReference; private var _track:TrackVO; private var _mp3Loader:MP3FileReferenceLoader; public function Test() { _mp3Loader = new MP3FileReferenceLoader(); _mp3Loader.addEventListener(MP3SoundEvent.COMPLETE, onComplete); _fr = new FileReference(); _fr.addEventListener(Event.SELECT, onFileSelect); stage.addEventListener(MouseEvent.CLICK, onClickStage); } private function onFileSelect(event:Event):void { _mp3Loader.getSound(_fr); } private function onClickStage(event:MouseEvent):void { _fr.browse([new FileFilter("MP3 Files", "*.mp3")]); } private function onComplete(event:MP3SoundEvent):void { _track = new TrackVO(); _track.mp3Sound = event.sound; // Если убрать эту строку то все будет ок, но мне нужно хранить звук именно в _track. _track.mp3Bytes = _fr.data; _fr.removeEventListener(Event.SELECT, onFileSelect); _fr = null; } } } |
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Я что-то не понял, что тебе конкретно не нравится. Тебе нужен Sound, ну он и занимает себе место. Если тебе более не нужен .mp3Bytes, ну отчисти его.
Очевидно же, что ByteArray и Sound - объекты совершенно разной природы, ты их и получаешь двумя совершенно разными способами:
__________________
мой пустой блог |
|
|||||
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
это надо ковырять стороннюю библиотеку MP3FileReferenceLoader, так как событие создает она
а чем вас не утсраивает фунция loadCompressedDataFromByteArray ? |
|
|||||
loadCompressedDataFromByteArray у меня не работает. Постоянно выдает ошибку про 40К.
Добавлено через 4 часа ... Все, заработал loadCompressedDataFromByteArray. Буду использовать его. Спасибо, chamele0n. Я раньше пробовал преобразовать PCM в Sound, но не получалось. Последний раз редактировалось TWETTI; 19.04.2013 в 17:07. |
Часовой пояс GMT +4, время: 14:29. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|