![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 8
|
Доброго времени суток всем =)
Перерыл сейчас весь форум, вопроса конкретно на свой вопрос не нашел. Итак - все просто. Mp3 плеер. Все работает, кроме того, что я хочу сделать нормально перемотку. Для этого нужно знать position и duration, насколько я понимаю. Но учитывая, что собственно трек подгружается, duration для меня параметр совсем не тот. На локалке ессно все ок, но вот чтоб реально работало... Я конечно извратился и добавил getBytesTotal / getBytesLoaded - примерно попадает )))) Но это ж не то совсем, как бы криво очень выходит. Куча сайтов с подобными плеерами есть - и там как-то все идеально... Можно конечно php задействовать, но по-моему длину там вытащить не проще, пробовал (хотя может не то). Сложновато выходит, а так хотелось в одну строчку) В общем, посоветуйте, как красивее обойти сию проблему) |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
position - сколько проиграло, duration - сколько скачалось или весь клип.
Перемотать можно только в пределах скачаного. Или перематывать на стороне сервера, но чем? |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 8
|
position, duration - это ессно понятно.
но когда есть полоса прокрутки на 100% трека, загрузилось допустим 30% - как перемотать скажем на 15%, при этом видна вся полоса прокрутки (что очевидно) ... вот в чем вопрос. собсно пример сразу - youtube.com. Только видео там, но это не важно - полоса прокрутки у меня аналогична. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Выдернуть duration из ID3 тега?
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Можно вычислить достаточно точно длительность трека, имея длину скачаного участка, его вес в байтах и общий вес. Общая длина - серая, скачаный участок - белый, а то что перемотка ошибется секунд на 5, поди докажи, никто и внимания не обратит.
ID3 тоже хорошо, но смотря чем файл сжат - может и соврать, а может и вообще отсутствовать. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я думаю, об ID3 создатель должен позаботиться.
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 2
|
Цитата:
Добавлено через 51 минуту preloader.onEnterFrame = function() { //этот Бар связан с буферизацией this.bloaded._xscale = Math.round(mp3_sound.getBytesLoaded()/mp3_sound.getBytesTotal()*100); //вычесление длины трека ВОТ ЭТО ТО ЧТО ТЫ ИЩЕШь нааверн :P !!!!!! var loaded = mp3_sound.getBytesLoaded(); var duration = mp3_sound.duration; kbps = ((loaded)/(duration)); var total = mp3_sound.getBytesTotal(); timeTotal = (total/kbps); //ну а тут отображаем текущую позицию this.curentPosition._xscale = Math.round(mp3_sound.position/timeTotal*100); }; |
|
|||||
|
[+4 06.05.14]
|
Вот выдерка из моего класса. Посмотри внимательнее разберись что зачем. Там полностью организована прокрутка ( как со 100% так и до 100% , то что ты хотел).
function setMusicActive(c, f) { sound = new Sound(c); sound.setVolume(100); sound.onSoundComplete = mx.utils.Delegate.create(this, Complete_control); sound.loadSound(soundArray[f],true); sound.onLoad = mx.utils.Delegate.create(this, Complete_control); sound.start(); CLP[0]._parent.o.drag.enabled = false; // клип драггера ползунка CLP[0]._parent.stop_btn.onRelease = mx.utils.Delegate.create(this, Stop_control); // кнопка остановки трека CLP[0]._parent.play_btn.onRelease = mx.utils.Delegate.create(this, Play_control); // кнопка проигрывания CLP[0]._parent.pause_btn.onRelease = mx.utils.Delegate.create(this, Pause_control); // кнопка паузы CLP[0]._parent.v.drag.onPress = mx.utils.Delegate.create(this, DRAGGER); // далее идут события для драгов CLP[0]._parent.o.drag.onPress = mx.utils.Delegate.create(this, DRAG2); CLP[0]._parent.o.drag.onRelease = mx.utils.Delegate.create(this, SDRAGGER2); CLP[0]._parent.o.drag.onReleaseOutside = mx.utils.Delegate.create(this, SDRAGGER2); CLP[0]._parent.v.drag.onRelease = mx.utils.Delegate.create(this, SDRAGGER); CLP[0]._parent.v.drag.onReleaseOutside = mx.utils.Delegate.create(this, SDRAGGER); clearInterval(_int2); clearInterval(SU); SU = setInterval(this, "checkProgress", 200); update(); } function Play_control() { if (paused) { sound.start(currentPosition); paused = false; } } function Stop_control() { sound.stop(); currentPosition = 0; paused = true; } function Pause_control() { if (!paused) { currentPosition = sound.position/1000; sound.stop(); paused = true; } else { if (currentPosition>0) { sound.start(currentPosition); paused = false; } } } function Complete_control(success) { clearInterval(inn); if (success) { inn = setInterval(this, "UP", 20); CLP[0]._parent.o.drag.enabled = true; } } function DRAGGER() { clearInterval(_int2); CLP[0]._parent.v.drag.startDrag(false,-50,0,50,0); _int2 = setInterval(this, "update", 1); } function SDRAGGER() { CLP[0]._parent.v.drag.stopDrag(); clearInterval(_int2); } function update() { var vol = CLP[0]._parent.v.drag._x+50; sound.setVolume(vol); } function DRAG2() { clearInterval(inn); clearInterval(_int2); CLP[0]._parent.o.drag.startDrag(false,0,0,100,0); _int2 = setInterval(this, "update2", 200); } function update2() { sound.start((Math.floor(sound.duration/1000)*CLP[0]._parent.o.drag._x)/100); clearInterval(_int2); } function SDRAGGER2() { CLP[0]._parent.o.drag.stopDrag(); inn = setInterval(this, "UP", 20); } function UP() { CLP[0]._parent.o.drag._x = Math.floor(sound.position/sound.duration*100); } function checkProgress() { var Loaded = Math.round(sound.getBytesLoaded()); var Total = Math.round(sound.getBytesTotal()); var pct = Math.floor((Loaded/Total)*100); if (Loaded/Total != 1) { LIST_ITEM._parent["LIST_ITEM"+CI].progress._visible = true; LIST_ITEM._parent["LIST_ITEM"+CI].progress.gotoAndStop(pct); } else { clearInterval(SU); LIST_ITEM._parent["LIST_ITEM"+CI].progress._visible = false; } } function UnFocusCicled() { for (var a = 0; a<ar.length; a++) { LIST_ITEM._parent["LIST_ITEM"+a].progress.gotoAndStop(1); } } function DELETE() { delete sound; } П.с. 2 много лишнего тут. обращай внимание только на механику. все удалить лишнее просто нет времени щас. удачи Последний раз редактировалось in4core; 25.03.2010 в 17:15. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|