по поводу звука.экстракт на AS3 - PullRequest
2 голосов
/ 27 ноября 2011

Я сейчас пытался использовать Sound.extract() метод. Он работает, когда звуковой объект напрямую загружает звуковые данные, используя Sound.load(), однако не обрабатывает никакой информации, когда я помещаю звуковые данные, используя Sound.loadCompressedDataFromByteArray(). Код выглядит примерно так:

var s:Sound = new Sound();
s.addEventListener(ProgressEvent.PROGRESS,onProgress);
s.loadCompressedDataFromByteArray(bytes,8192);
bytes.position += 8192;

private function onProgress(e:ProgressEvent):void {
    var num: int = s.extract(buffer,8192);
    buffer.position += num;
    s.loadCompressedDataFromByteArray(bytes,8192);
}

Sound.extract() метод возвращает количество прочитанных данных, и он работает правильно, когда я загружаю звуковые данные, используя Sound.load(). Тем не менее, он не работает (означает возвращать 0, но не выдает никаких исключений), когда я загружаю звуковые данные, используя Sound.loadCompressedDataFromByteArray(), даже если он правильно генерирует событие прогресса ...

У меня вопрос, есть ли такое ограничение в AS3.

Я просто хотел бы получить совет от любого, кто много знает об AS3.

Спасибо !!

1 Ответ

0 голосов
/ 25 сентября 2012

Проблема довольно очевидна, и я думаю, что вы неправильно понимаете функцию sound.extract.sound.extract метод заключается в извлечении необработанных звуковых данных в байтовый массив из допустимого звукового файла (что означает, что звуковой файл должен иметь некоторую информацию).

Итак, 1. Нет проблем при извлечении данных в массив байтов из экземпляра звука, который загружает внешний звуковой файл, используя sound.load(req); (только после загрузки звукового файла) 2. Также можно извлечьданные в байтовый массив из звуковой переменной, созданной библиотечным ресурсом var sound:Sound = new MySound();.

Само собой разумеется, должна быть некоторая информация для извлечения данных.Но в этом случае есть попытка извлечь данные из переменной, которая просто создается классом Sound.т.е.) var s:Sound = new Sound();.В этом нет информации для воспроизведения, но он создан, поэтому он не выдаст ошибку при попытке extract

...