Как играть, MP3 звучат от буфера (ByteArray/Stream) в ActionScript 3?

вещь помнить с константой состоит в том, что намного легче сделать вещи константой из запуска, чем это должно попытаться вставить их позже.

константа Использования, когда Вы хотите, чтобы что-то было неизменно - добавленная подсказка, которая описывает то, что делает Ваша функция и что ожидать. Я видел много API C, которые могли сделать с некоторыми из них, особенно, которые принимают струны до!

я был бы более склонен опустить ключевое слово константы в cpp файле, чем заголовок, но поскольку я ухаживаю к cut+paste за ними, они были бы сохранены в обоих местах. Я понятия не имею, почему компилятор признает, что, я предполагаю, что это - вещь компилятора. Лучшая практика должна определенно поместить Ваше ключевое слово константы в оба файла.

12
задан Amarghosh 26 October 2009 в 04:32
поделиться

2 ответа

Этот не работает, поскольку SampleDataEvent.data ожидает несжатые необработанные данные образца, а не MP3. Используйте https://github.com/claus/as3swf/wiki/play-mp3-directly-from-bytearray вместо этого.

5
ответ дан 2 December 2019 в 22:05
поделиться

Для меня работает следующее:

package
{
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.SampleDataEvent;
 import flash.media.Sound;
 import flash.media.SoundChannel;
 import flash.net.URLRequest;
 import flash.net.URLStream;
 import flash.utils.ByteArray;

 public class QuickSoundTest extends Sprite
 {
  public var sampleMP3:Sound;
  private var soundChannel:SoundChannel; 
  public var bArr:ByteArray;

  public function QuickSoundTest()
  {
   sampleMP3 = new Sound();

   var urlReq:URLRequest = new URLRequest("test.mp3");
   var urlStream:URLStream = new URLStream();
   urlStream.addEventListener(Event.COMPLETE, loaded);
   urlStream.load(urlReq);

  }

  private function loaded(event:Event):void {
   var urlStream:URLStream = event.target as URLStream;
   bArr = new ByteArray();
   urlStream.readBytes(bArr, 0, 40960);
   sampleMP3.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleDataHandler);
   soundChannel = sampleMP3.play();
  }

  private function sampleDataHandler(event:SampleDataEvent):void {
   event.data.writeBytes(bArr, 0, 40960);
  }
 }
}

Вам может потребоваться проверить, что хранится в вашем массиве readResponse ByteArray или как данные считываются при загрузке. Убедитесь, что он загрузил URLLoader, используя URLLoaderDataFormat.BINARY или просто используя URLStream, как я сделал здесь.

2
ответ дан 2 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: