Lecteur audio multi-pistes

Description

C'est un lecteur audio simple multi-pistes: il permet de lui fournir plusieurs fichiers et il les lit l'un après l'autre
Il fait à peu près la même-chose que le http://www.alsacreations.fr/dewplayer, mais avec le code source en plus.
L'exemple d'utilisation: http://www.uaemon.com/public/flash/uaemon_skin.html

Source / Exemple :


// Variables
var guide:Sound = new Sound();
var titles:Array;
var durations:Array;
var current_play_number:Number;
var play_position:Number = 0;
var total_duration:Number;
var isPlaying:Boolean;	// playing or not

// Initial button states
button_pause._visible = false;
button_stop_enabled._visible = false;
button_prev_enabled._visible = false;
button_next_enabled._visible = false;

play_position = 0;
isPlaying = true;	// auto-start

titles = mp3.split("|");	// List of titles to play
durations = duration.split("|");	// Duration of each title
current_play_number = 0;
total_duration = 0;
for (var i:Number=0; i<durations.length; i++) {
	total_duration += Number(durations[i]);
}

total_duration = total_duration*1000;

if (titles.length > 1) {
	button_prev_enabled._visible = true;
	button_next_enabled._visible = true;
}

guide.setVolume(50);
guide.loadSound(titles[0], true);
playing_button_states();

function playing_button_states() {
	button_play._visible = false;
	button_pause._visible = true;
	button_stop_disabled._visible = false;
	button_stop_enabled._visible = true;
};
function idle_button_states() {
	button_play._visible = true;
	button_pause._visible = false;
	button_stop_disabled._visible = true;
	button_stop_enabled._visible = false;
};
guide.onLoad = function(success:Boolean) {
	if (isPlaying) {
		guide.start(play_position/1000);
	}
};
guide.onSoundComplete = function() {
	play_position = 0;
	guide.start(0);
	guide.stop();
	if ((current_play_number+1) < titles.length) {
		current_play_number++;
		guide.loadSound(titles[current_play_number], true);
	} else {
		current_play_number = 0;
		isPlaying = false;
		guide.loadSound(titles[0], true);
		guide.start(0);
		guide.stop();
		idle_button_states();
	}
};
button_stop_enabled.onRelease = function() {
	isPlaying = false;
	play_position = 0;
	guide.start(0);
	guide.stop();
	current_play_number = 0;
	guide.loadSound(titles[0], true);
	guide.start(0);
	guide.stop();
	idle_button_states();
};
button_pause.onRelease = function() {
	isPlaying = false;
	play_position = guide.position;
	guide.stop();
	button_play._visible = true;
	button_pause._visible = false;
};
button_play.onRelease = function() {
	isPlaying = true;
	guide.start(play_position/1000);
	playing_button_states();
};
button_prev_enabled.onRelease = function() {
	if (current_play_number > 0) {
		play_position = 0;
		guide.start(0);
		guide.stop();
		current_play_number--;
		isPlaying = true;
		guide.loadSound(titles[current_play_number], true);
	}
};
button_next_enabled.onRelease = function() {
	play_position = 0;
	if (current_play_number < (titles.length-1)) {
		current_play_number++;
	} else {
		current_play_number = 0;
	}
	guide.start(0);
	guide.stop();
	isPlaying = true;
	guide.loadSound(titles[current_play_number], true);
};
progress_bar.onEnterFrame = function() {
	var cumul_duration:Number = 0;
	for (var i:Number = 0; i<current_play_number; i++) {
		cumul_duration += Number(durations[i])*1000;
	}
	this._xscale =((cumul_duration+guide.position)/total_duration)*100;
};
progress_bar_background.onRelease = function() {
	var new_position:Number = (this._xmouse*total_duration)/(this._width*1000);
	var cumul_duration:Number = 0;
	var new_title:Number = 0;
	for (var i:Number=0; i<durations.length; i++) {
		cumul_duration += Number(durations[i]);
		if (new_position < cumul_duration) {
			new_title = i;
			cumul_duration -= Number(durations[i]);
			break;
		}
	}
	if (current_play_number != new_title) {
		guide.loadSound(titles[new_title], true);
		current_play_number = new_title;
	}
	play_position = (new_position-cumul_duration)*1000;
	guide.start(0);
	guide.stop();
	guide.start(new_position-cumul_duration);
};
volume_bar.volume_cursor.onEnterFrame = function() {
        guide.setVolume((this._x*100)/32);
};
volume_bar.volume_cursor.onPress = function() {
        this.startDrag(false, 0, -3, 32, -3);
};
volume_bar.volume_cursor.onRelease = volume_bar.volume_cursor.onReleaseOutside = function () {
        this.stopDrag();
};

Conclusion :


C'est un lecteur simple pour un besoin particulier.
Un lecteur en flash permet aussi de contourner le problème de compatibilité entre les différents OS.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.