вещь помнить с константой состоит в том, что намного легче сделать вещи константой из запуска, чем это должно попытаться вставить их позже.
константа Использования, когда Вы хотите, чтобы что-то было неизменно - добавленная подсказка, которая описывает то, что делает Ваша функция и что ожидать. Я видел много API C, которые могли сделать с некоторыми из них, особенно, которые принимают струны до!
я был бы более склонен опустить ключевое слово константы в cpp файле, чем заголовок, но поскольку я ухаживаю к cut+paste за ними, они были бы сохранены в обоих местах. Я понятия не имею, почему компилятор признает, что, я предполагаю, что это - вещь компилятора. Лучшая практика должна определенно поместить Ваше ключевое слово константы в оба файла.
Этот не работает, поскольку SampleDataEvent.data ожидает несжатые необработанные данные образца, а не MP3. Используйте https://github.com/claus/as3swf/wiki/play-mp3-directly-from-bytearray вместо этого.
Для меня работает следующее:
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, как я сделал здесь.