PDA

Просмотр полной версии : Проблема с mp3 плеером


Korsar Nik
11.01.2008, 17:59
Нужно сделать mp3 плеер с плейлистом. Так как ранее с xml не работал, переделываю чужой исходник. Проблема в том, что не знаю как сделать, чтобы при завершении текущего трека начинал играть следующий. Кроме того, хочется, чтобы при нажатии на трек в плейлисте он сразу начинал играть, без дополнительного нажатия кнопки Play. Подскажите, пожалуйста, как это реализовать. Вот исходник (http://***********/4902851)

Заранее спасибо.

Fernando Costa
11.01.2008, 18:10
ActionScript 2.0 Language Reference

ActionScript classes > Sound > onSoundComplete (Sound.onSoundComplete handler)

Mr. Fixit
11.01.2008, 18:27
хочется в вакансиях =)

вот при нажатии, пусть и играет

Aisaid
11.01.2008, 19:31
вот простенький мп3 плеер с плейлистом :)
(код без каментов... делал для себя, но всё очень просто)

Korsar Nik
11.01.2008, 22:58
2Aisaid
Спасибо, я где-то даже видел этот исходник, когда через поиск плееры искал. Но мне кроме того нужно отображение плейлиста.

Поставлю вопрос конкретнее. Вот код:


stop();

var snd = this.createEmptyMovieClip("SoundController", 1);

snd.init = function() {
snd._sound = new Sound(this);
this.isPlaying = false;
this.position = 0;
loadingbar_mc._xscale = 0;
progressbar_mc._xscale = 0;
};
snd.loadSound = function(url) {
this._sound.loadSound(url,true);
stop_btn.onRelease();
};
snd._sound.onSoundComplete = function() {
stop_btn.onRelease();
};
snd.onEnterFrame = function() {
if (this.isPlaying) {
this.position = this._sound.position;
}
this.loaded = this._sound.getBytesLoaded()/this._sound.getBytesTotal();
loadingbar_mc._xscale = scrubber_mc._xscale*this.loaded;
progressbar_mc._xscale = loadingbar_mc._xscale*this.position/this._sound.duration;
};

play_btn.onRelease = function() {
if (!isPlaying) {
snd._sound.start(snd.position/1000);
snd.isPlaying = true;
}
};
pause_btn.onRelease = function() {
if (!snd.isPlaying) {
return (0);
}
snd.position = snd._sound.position;
snd._sound.stop();
snd.isPlaying = false;
};
stop_btn.onRelease = function() {
snd.position = 0;
snd._sound.stop();
snd.isPlaying = false;
};
prev_btn.onRelease = function() {
if (snd.node) {
if (snd.node.previousSibling) {
SetSong(snd.node.previousSibling);
} else {
SetSong(snd.node.parentNode.lastChild);
}
}
};
next_btn.onRelease = function() {
if (snd.node) {
if (snd.node.nextSibling) {
SetSong(snd.node.nextSibling);
} else {
SetSong(snd.node.parentNode.firstChild);
}
}
};

scrubber_mc.onPress = function() {
if (!snd.loaded) {
return (0);
}
var pos = this._xmouse/100;
snd.position = Math.min(snd._sound.duration, pos*snd._sound.duration/snd.loaded);
if (snd.isPlaying) {
snd._sound.start(snd.position/1000);
}
};

SetSong = function (node) {
snd.node = node;
snd.loadSound(node.attributes.src);
title_txt.text = node.attributes.title;
};

snd.init();


В прицнипе, названия функций сами за себя говорят. Сейчас при нажатии кнопки next_btn становится активным следующий в плейлисте трек и воспроизведение останавливается. Чтобы трек ещё и заиграл, мне нужно нажать play_btn.
А теперь я хочу, чтобы следующий трек автоматически начинал играть при нажатии next_btn. Для этого я просто-напросто добавляю в функцию next_btn вызов функции play_btn:
next_btn.onRelease = function() {
if (snd.node) {
if (snd.node.nextSibling) {
SetSong(snd.node.nextSibling);
} else {
SetSong(snd.node.parentNode.firstChild);
}
}
play_btn.onRelease();
};

Но в результате следующий трек становится активным, воспроизведение всё так же останавливается и сохраняется, а не обнуляется положение ползунка воспроизведения (почему?).

Проблему изложил, хоть и громоздко. Помогите, пожалуйста, разобраться. Если я что-то непонятно описал - вверху ссылка на исходник. Заранее благодарен за советы.

Korsar Nik
14.01.2008, 02:19
Тема всё ещё актуальна. Помогите, пожалуйста.

Aisaid
14.01.2008, 12:44
читаешь листинг из файла - записываешь его в комбо бокс или лист
алгоритм автоматического воспроизведения есть в моём примере
по моему тема себя исчерпала

ecolora
10.07.2010, 10:52
А Вы решили проблему с множественной загрузкой звука?
http://www.flasher.ru/forum/showthread.php?t=141948
Может поможете советом?
По идее stop не вынуждает браузер прекратить загрузку звука и если пользователь "торопыга", то в конце концов, пощёлкав по очереди треки в проигрывателе, он получит большие тормоза при воспроизведении очередного трека.

KirAmp
10.07.2010, 18:08
Korsar Nik
1) В пособии братьев Гурских написано как сделать плеер
2) В конце Мука есть потрясающий справочник на русском языке по процедурам и функциям AS2.
--------------------------------------------
3)
sound_obg.onSoundComplete = function() {
play_var++;
play_function(play_var);
}
Возможно натолкнет на умные мысли.
--------------------------------------------
Могу и готовый плеер кинуть...... Только толка будем мало......