Написал плеер для проигрывания mp3-файлов с сервера во Flex Builder 3. Всё отлично, но при перемотке, когда вычисляется позиция на которую нужно перейти и продолжить проигрывание файла, иногда звук либо останавливается либо всё таки перематывается.
Вот функция перемотки:

Код:
private var isPlaying:Boolean = false; // проигрывается ли сейчас файл или нет
private var pausePos:Number = 0; // позиция последней остановки звука (пауза, конец воспроизведени, перемотка...)
private var snd:Sound; // собственно, сам звуковой поток
private var sndChannel:SoundChannel; // канал звука
private var sndTr:SoundTransform = new SoundTransform(0.8); // громкость звука
/* ... */
private function sndPause():void {
if(isPlaying)
{
pausePos = sndChannel.position;
sndChannel.stop();
isPlaying = false;
}
}
private function seekTo(event:MouseEvent):void {
sndPause();
pausePos = (event.localX/seek_pb.width)*snd.length; // seek_pb:ProgressBar
sndPlayPause();
}
private function sndPlayPause():void {
if(snd != null)
{
if(isPlaying)
{
sndPause();
}
else
{
sndChannel = snd.play(pausePos);
sndChannel.soundTransform = sndTr;
isPlaying = true;
}
}
}
Все значения трейсил, ошибок нет и ничего не вылетает, т.е. все передаваемые значения для перемотки лежат в пределах закачанного кусочка файла. Даже после полной закачки прикол остается. Отлично перематывается в первой половине файла, а во второй половине - смотря у какого файла. Длительности файлов тоже разные: есть по 5 минут и есть по 2 часа. Битрейт тоже разный: от 8kbps до 256kbps.
В чем конкретно может быть прикол? Почему так странно работает метод Sound.play(newPos)?