Подскажите пожалуйста кто занимался написание mp3 плеера на Flash.
Уроки и примеры которые выложенны в интернете не объсняют ряд проблем, а именно:
подглючивание с загрузкой треков
Ситуация следующая:
- по умолчанию загружается автоматом первый трек, но это не важно
- отрисовывается прогресс бар
- если трек не дозагрузился, а пользователь нажмет кнопку на следующий трек, то загрузка прервется и начнется новая
- то вот здесь и вслывает проблема! ролик не грузит в себя (как мне кажется) второй раз этот трек, а использует то, что есть
Результат
- вместо проигрования слышно как будто зациклен маленький фрагментик
почему так странно играет понятно, так как метод play в моем плеере рабетает через свойства sound объекта (position, duration), а они не соотведствуют действительности
Код:
Audio.prototype.play = function(){
if(this._loaded != 100){return;}
if(this._mute)
{this._soundObj.setVolume(0);}
this.isPlaying = true;
this._soundObj.stop();
this._soundObj.start(this.position/1000, 0);
this.createProgressBar();
}
Как мне объяснить флешу, да и вообще узнать это, что если трек не догрузился, то загрузить его заного целиком.
На медленном канале, человек очень с большой вероятностью захочет переключить на следующий трек не дождавшись загрузки текущего.
Кто нибудь может помочь?
Вот как происходит загрузка
Код:
Audio.prototype.loadUrl = function(url)
{
this.isPlaying = false;
this._soundObj.loadSound(url, false);
this._loaded = 0;
this._nDownloadInterval = setInterval(this,"checkDownload",3);
this.createProgressBar();
}
//this._soundObj = new Sound(target);
//создается при создании объекта
//this.isPlaying если это false то плеер не играет
//this._loaded если это не 100 то плеер не играет
//вот как происходит проверка загрузки mp3
Audio.prototype.checkDownload = function(){
if(this._loaded != 100) {
this._loaded=Math.round(this._soundObj.getBytesLoaded()/this._soundObj.getBytesTotal()*100);
}
else
{
this.onLoadUrl();
}
}
////////////////
//onLoadUrl(); в это функции я убираю загрузчик
//и начинаю проигрование
//и загружаю данные из sound объекта
так вот у меня складывается мнение что onLoadUrl() вызывается раньше времени
спасибо.