Показать сообщение отдельно
Старый 11.01.2008, 22:58
Korsar Nik вне форума Посмотреть профиль Отправить личное сообщение для Korsar Nik Найти все сообщения от Korsar Nik
  № 5  
Ответить с цитированием
Korsar Nik

Регистрация: May 2006
Сообщений: 36
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();
};
Но в результате следующий трек становится активным, воспроизведение всё так же останавливается и сохраняется, а не обнуляется положение ползунка воспроизведения (почему?).

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