我在我的代码中执行以下操作:
_sound = new Sound();
_sound.addEventListener( SampleDataEvent.SAMPLE_DATA, handlePlaybackSampleData );
_soundChannel = _sound.play();
通常这应该导致Sound调用句柄...函数,当它想要播放时,我可以为声音插入我自己生成的ByteArray。 但它甚至没有调用该函数,有时(!!!)崩溃而不是:
Error #2004: One of the parameters is invalid.
我不知道为什么会这样。在所有的例子中,它的工作原理与此类似 它也没有多大意义,因为play()中的所有参数都是可选的。
在此之前,我正在将麦克风输入录制到缓冲区,然后想要播放我录制的内容,这就是所有这些内容。
编辑: 这是功能:
public function handlePlaybackSampleData(p_sampleEvent:SampleDataEvent) :void
{
// Read data until either MAX_SAMPLES or all available samples are reached.
var i:int = 0;
var data :Number = 0;
while( i < 8192 )
{
if( _lastRecord.bytesAvailable )
{
data = _lastRecord.readFloat();
p_sampleEvent.data.writeFloat(data);
p_sampleEvent.data.writeFloat(data);
i++;
continue;
}
else
{
break;
}
}
}
答案 0 :(得分:0)
要让这个问题得到“正式回答”,以下是发生的事情:
采样率是一个问题,您可以在另一个question中看到。解决这个问题也解决了这个问题。
不幸的是,我无法解释如何。也许这只是一个稍微复杂的编译并重新启动修复它的一切。无论如何,它现在已经消失了。