我正在使用ActionScript在Flash Mobile中开发一个项目.我有一个压缩的wav文件,我需要能够在Button Press动作中根据需要进行序列化和播放.下面是压缩wav文件的代码.
mic.removeEventListener(SampleDataEvent.SAMPLE_DATA,micSampleDataHandler);
btnRecord.setStyle("icon",recOff);
sampleCount++;
// save the raw PCM samples as a bare WAV file
var wav:ByteArray = new ByteArray();
var writer:WAVWriter = new WAVWriter();
writer.numOfChannels = 1;
writer.sampleBitRate = 16;
writer.samplingRate = 11025;
samples.position = 0;
writer.processSamples(wav,samples,11025,1);
wav.position = 0;
// zip the WAV file
var fzip:FZip = new FZip();
fzip.addFile(name + sampleCount.toString(),wav);
var zip:ByteArray = new ByteArray();
fzip.serialize(zip);
var recSpot:Object = {
id: null,audio: zip,name: "New Audio File " + newRecNum,existsdb: "false"
};
newRecNum++;
recordings.addItem(recSpot);
}
最佳答案
我不熟悉WAVWriter(这可能有点不合适),但这就是我所知道的.
首先,由于压缩的性质,你不能(据我所知)播放压缩音频文件,句号.您需要先解压缩它.
使用FZIP解压缩后,Google快速搜索了THIS AS3 TUTORIAL.示例程序使用.PNGs,但我认为您可以调整它以使用先前压缩的原始.WAV文件.跳到第5步,获取实际代码. (显然,您需要重写它以使用您的界面.)
在步骤5中,您将不需要DataProvider变量,特别是对于组件.您需要将数据加载到其他内容中.如果您播放WAV文件的方法与我的相似(我使用的是as3WAVSound class),您可能希望将数据加载到ByteArray中并进行播放.
你也可能不需要他在步骤10中使用的for循环,因为你的代码似乎是创建一个只有一个WAV文件的ZIP.这大大简化了事情.
无论如何,我希望能回答你的问题!