Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Vida

[Resolvido] MP3 Player em modo aleatório!

Recommended Posts

Bom dia a todos!

 

Não sei se aqui vai ser bem a seção correta, mas necessito desenvolver um player que seja em modo aleatório...a ideia é ter um player em que a pessoa entra no site e toca uma determinada música, seria umas 5 ou 6, mas que cada hora que ela entrasse tocava uma diferente, claro que dependendo pode ser que repita, mas que nem sempre seja o mesmo trecho ou música.

 

obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui ó:

function iniciar(){
 mysound = new Sound();
 mysound.onSoundComplete = iniciar;
 if(inic == 0){
 bt_play._visible = 1;
 bt_pause._visible = 0;
 inic = Math.round(Math.random()*mp3.length);
 txt_stat = mp3[inic];
 mysound.loadSound(mp3[inic], true); // carrego a musica da array
 mysound.stop(); // dou stop assim que ele encontra a primeira musica para que ele n inicie tocando sozinho
 inic++;
 }else if(inic == mp3.length){
 mysound.onSoundComplete = function(){
 mysound.stop();
 }
 }else{
 txt_stat = mp3[inic];
 mysound.loadSound(mp3[inic], true);
 inic++;
 }
}

 

Abraços

E bons estudos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Beserck, desculpa pela demora...Gostaria de agradecer você mais uma vez pela atenção.Não sou muito bom em programação mas estudei seu código e consegui fazer as alterações que necessitava para colocar o player da maneira que eu deseja, no caso como queria ele iniciando automaticamente mudei alguns valores, e tirei as partes que não ia usar. Mas ainda falta alguns detalhes que se possível gostaria de modificar. O primeiro seria que na hora que clica no botão voltar, se a pessoa voltar além da primeira música ele aparece escrito "Undefine", queria saber se tem como voltar para a última música. tambem gostaria de saber se tem como deixar ele em loop, assim que acabar a ultima música ele volta para a primeira. Outra dúvida que tenho é se da pra editar o nome nome dá música, por exmplo "Musica: Musica Um">sample.mp3 e fazer rolagem automática dentro do txt_stat.Até então meu código está assim:

 

//Código original desenvolvido por: Berseck

//Uso codificação que leia os acentos
System.useCodepage = true;

//Minhas arrays
var mp3:Array = new Array();

//Variáveis
var mysound:Sound = new Sound();
mysound.onSoundComplete = inicia;
var inic:Number = 0;
var pos:Number = new Number();


//Clicar na celula muda de música
dgL = new Object();
dgL.cellPress = function(evt_obj:Object){
    inic = evt_obj.itemIndex;
	iniciar();
	if(inic == 1){//alterei o valor para 1
		bt_play._visible = 1;
		bt_pause._visible = 0;
	}else{
		bt_play._visible = 0;
		bt_pause._visible = 1;
	}
}



//Style 
_global.style.setStyle("color", 0x696969);
_global.style.setStyle("themeColor", "haloBlue")
_global.style.setStyle("fontSize",16);
_global.style.setStyle("fontFamily" , "OCR A Extended");

//Função que vai carregar os Mp3
var my_xml = new XML;
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success:Boolean) {
	if(success){
		var cont = my_xml.firstChild.childNodes;
		for(var i = 0; i < cont.length; i++){
			mp3.push(cont[i].childNodes);
			var dados:Object = {Músicas:cont[i].childNodes};
			my_dg.addItem(dados);
		}
		iniciar();
	}else{
		trace("erro ao carregar o xml");
	}
}
my_xml.load("musicas.xml");
//Fim

//Inicia o player
function iniciar(){
	mysound = new Sound();
	mysound.onSoundComplete = iniciar;
	if(inic == 1){
		bt_play._visible = 1;
		bt_pause._visible = 0;
		vu._visible = 0;
		inic = Math.round(Math.random()*mp3.length);
		txt_stat = mp3[inic];
		mysound.loadSound("mp3/"+mp3[inic], true);
		//mysound.stop();
		inic++;
	}else if(inic == mp3.length){
		mysound.onSoundComplete = function(){
			mysound.stop();
		}
	}else{
		txt_stat = mp3[inic];
		mysound.loadSound("mp3/"+mp3[inic], true);
		inic++;
	}
}
//Fim

//Botões
bt_pause._visible = 1;
vu._visible = 1;
bt_play.onPress = function(){
	mysound.start(pos/1000);
	bt_pause._visible = 1;
	vu._visible = 1;
	bt_play._visible = 0;
}
bt_pause.onPress = function(){
	mysound.stop();
	bt_play._visible = 1;
	vu._visible = 0;
	bt_pause._visible = 0;
	pos = mysound.position;
}
bt_stop.onPress = function(){
	mysound.stop();
	bt_play._visible = 1;
	bt_pause._visible = 0;
	vu._visible = 0;
}
bt_fow.onPress=  function(){
	if(inic >= mp3.length){
		inic = mp3.length;
	}else{
		iniciar();
		bt_play._visible = 0;
		bt_pause._visible = 1;
		vu._visible = 1;
	}
}
bt_bac.onPress=  function(){
	if(inic == 1){
		inic = 0;
	}if(inic == 2){
		inic -= 2;
		iniciar();
		bt_play._visible = 0;
		bt_pause._visible = 1;
		vu._visible = 1;
	}else {
		inic -= 2;
		iniciar();
		bt_play._visible = 0;
		bt_pause._visible = 1;
		vu._visible = 1;
	}
}
//Fim


//Volume
mc_volume.gotoAndStop(6);
mysound.setVolume(100);
mc_volume.vol1.onPress = function(){
	mysound.setVolume(0);
	mc_volume.gotoAndStop(1);
}
mc_volume.vol2.onPress = function(){
	mysound.setVolume(20);
	mc_volume.gotoAndStop(2);
}
mc_volume.vol3.onPress = function(){
	mysound.setVolume(40);
	mc_volume.gotoAndStop(3);
}
mc_volume.vol4.onPress = function(){
	mc_volume.gotoAndStop(4);
	mysound.setVolume(60);
}
mc_volume.vol5.onPress = function(){
	mc_volume.gotoAndStop(5);
	mysound.setVolume(80);
}
mc_volume.vol6.onPress = function(){
	mc_volume.gotoAndStop(6);
	mysound.setVolume(100);
}


//Toca a URL
mensagem = "Digite aqui a URL do mp3 e aperte Tocar";
site.text = mensagem;
site.onSetFocus = function(oldFocus) {
	trace("to aqui");
	if(site.text != "") {
		site.text = "http://";
	}
}
toca.onPress = function(){
	mysound = new Sound();
	mysound.onSoundComplete = iniciar;
	mysound.loadSound(site, true);
	bt_play._visible = 0;
	bt_pause._visible = 1;
}


//Tempo da musica
var ttimer = setInterval(intervalTimer, 1000);
function intervalTimer(){
	var duracao = mysound.duration/1000;
	var time:Number = mysound.position/1000;
	var myseekW:Number = my_seek._width;
	var percent:Number = (time / duracao * myseekW);
	if(time > 0){
		var integer:String = String((time*.0166)>>0);
		var decimal:String = String((time%60)>>0);
		stempo = String((integer.length<2)?"0"+integer:integer)+":"+((decimal.length<2)?"0"+decimal:decimal);
	} else stempo = String("00:00");
}
//Fim

//Loader
function DL(){
	download._width = mysound.getBytesLoaded() / mysound.getBytesTotal() * (my_seekBar._width - 2);
}
var tempoDL = setInterval(DL, 100);
//Fim

Outra coisa que seria interessante para min, seria colocar a capa do album junto com o player, estava lendo esse outro exemplo de player que contem essa função. http://www.mxstudio.com.br/flash/mp3_player_com_xml/ no caso não sei aonde e como adicionária no código para poder pegar as imagens como filhos no xml. quanto ao xml imagino que ele ira ficar assim:

 

<?xml version="1.0" encoding="utf-8"?>
<mp3>
    <musicas>sample.mp3</musicas>
    <cd>imagem.jpg</cd>   
</mp3>

Mais uma vez agradeço pela atenção de todos!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ir e voltar tem que fazer uma comparação para ver se já chegou ao maximo...

Ou no minimo para pegar a ultima...

 

Se não me engano no código original tinha essa conta já...

Mas como você alterou, tem de re fazer o código

 

é uma coisa simples no botão voltar

você precisa colocar um if(inic <= 0) inic = (array.length -1)ele vai para o ultimo numero da array menos 1

else ele continua

 

E a mesma coisa para a ultima musica if(inic >= (array.length -1)) inic = 0 ele zera o contador incial

 

Quanto a novos features que você queira implementar... estude sobre o código e veja sobre MovieClipLoader etc... para poder implementar o que você quiser.

Esse tutorial é apenas um exemplo de como se faz...

Não tem todas as opções de um player mesmo.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Beserck!

 

Mais uma vez venho te agradecer e tentar esclarecer mais uma dúvida. Consegui solucionar em partes, pois não sei se apliquei o código da maneira correta, mas quando clico no botão voltar agora ele sempre volta para a primeira música, e não vai de música em música como estava, porém não aparece mais o erro.

 

Código original

 

//botão para adiantar musica
bt_fow.onPress=  function(){
        if(inic >= mp3.length){
                inic = mp3.length;
        }else{
                iniciar();
                bt_play._visible = 0;
                bt_pause._visible = 1;
        }
}
//botão para voltar musica
bt_bac.onPress=  function(){
        if(inic == 1){
                inic = 0;
        }if(inic == 2){
                inic -= 2;
                iniciar();
                bt_play._visible = 1;
                bt_pause._visible = 0;
        }else {
                inic -= 2;
                iniciar();
                bt_play._visible = 0;
                bt_pause._visible = 1;
        }
}

Código com as alterações

 

bt_fow.onPress=  function(){
	if(inic >= mp3.length){
		inic = mp3.length;
	}else{
		iniciar();
		bt_play._visible = 0;
		bt_pause._visible = 1;
		vu._visible = 1;
	}
}
bt_bac.onPress=  function(){
	//Código Substituido
	if(inic <= 0){ 
	inic = (array.length -1);}
	if(inic >= (array.length -1)){ 
	inic = 0;
	iniciar();
		bt_play._visible = 0;
		bt_pause._visible = 1;
		vu._visible = 1;
	}
	else {
		inic -= 2;
		iniciar();
		bt_play._visible = 0;
		bt_pause._visible = 1;
		vu._visible = 1;
	}
}

Quanto a questão das imagens dei uma pesquizada sobre MovieClipLoader, mas encontrei esse tutorial na internet ( http://www.plugmasters.com.br/sys/materias/224/1/Carregar-imagens-de-um-XML ) e dele partiu a ideia de criar um novo xml só com imagens, sendo que o número da música seria o mesmo da imagem. Até então está funcionando bem, mas só funciona quando alguém clica, pois se a música acabar a imagem não muda sozinha.você sabe me dizer como posso resolver!?

 

Muito obrigado cara, esses desafios motivam agente a aprender cada vez mais...E assim espero para poder contribuir mais com o forúm. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos ao basico ok? assim talvez você mesmo solucione seu problema

 

tenho 10 musicas! então vou fazer com 10 para você entender

bt_forward.onPress = function(){
 //Coloco um if que vai verificar se o contador é menor que o total -1 pq uma array comeca do 0
 if(inic < (mp3.length-1)){
 inic++
 }else {
	//Se ele for igual ao numero maximo menos 1... ou seja está na ultima musica, e você apertar foward ele tem de zerar o contador
	inic = 0;
 }
 //Re inicio o player lembrando que isso é um código ficticio
 iniciar();
}

bt_backward.onPress = function(){
 //Coloco um if que vai verificar se o contador é maior que 0
 if(inic > 0){
 inic--;
 }else {
	//se o contador for igual a 0, ele passa a ser a ultima musica
	inic = mp3.length - 1;
 }
 //Reinicio o player lembrando que isso é um código ficticio
 iniciar();
}

Entendeu como funciona??

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado novamente Berseck,

 

Agora consegui fazer sim, vi aonde estava o erro!

 

Brigadão mesmo...agora vou tentar implementar a questão da mudança de iamgens para a capa do album!

 

Valeu cara!

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.