Ir para conteúdo

Arquivado

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

Carcleo

s com MP3Player

Recommended Posts

Ola pessoal do fórum!

 

Talves, seje simples minha duvida porem, não consegui resolver.

 

Então vamos la?

 

Bom, to tentando fazer um radio pra toicar mp3 em flash e estiv e estudando alguns códigos.

Cheguei a esse abaixo porem, da o log de erros abaixo.

Se alguem puder ajudar desde ja agradeço;

codigo

var som:Sound = new Sound();
var musicas:Array = new Array();
var i, vol, verifica, pos:Number;
var ligado:Boolean;
var acao:String; 

stop();

musicas[0] = "audio/audio1.mp3";
musicas[1] = "audio/audio2.mp3";
musicas[2] = "audio/audio3.mp3";

if (ligado==null) {
	i = 0;
	vol = 100;
	ligado = false;
}

this.onEnterFrame = function() {
	som.setVolume(vol);

	if (ligado==false) {
		som.loadSound(musicas[i], true);

 if (i<5)
			i++;
		else
			i = 0;

		ligado = true;
	}

	artista.text = "Artista: " + som.id3.artist;
	musica.text = "Musica: " + som.id3.songname; 

	verifica = som.getVolume();
	if (verifica>=100) {
		som.setVolume(100);
	}
	if (verifica<=0) {
		som.setVolume(0);
	}

	v3.text = som.getVolume() + "%";
}

som.onSoundComplete = function() {
	ligado = false;
} 

v1.onRelease = function() {
	verifica = som.getVolume();
	vol = verifica+5;
}

v2.onRelease = function() {
	verifica = som.getVolume();
	vol = verifica-5;
}

stopi.onRelease = function() {
	som.stop();
}

pausi.onRelease = function() {
	acao = "pause";
	pos = som.position/1000;
	som.stop();
}

plai.onRelease = function() {
	if (acao=="pause") {
		som.start(pos);
		acao="";			 }
	else {
		som.start();
		 }
							 }
ff.onRelease = function() {
	ligado = false;
	som.stop();
}
log

Imagem Postada'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, seu código é só esse?

Pq se for tá rolando norlmal, e o erro está se referindo á classe flash.media.

 

Ve ai se tem mais codigo e passa pra gente.

Se tiver o arquivo .zip, melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro era na declaração das variaveis;

 

Mas agora surgiu mais dois problemas.

1) esse código abaixo é para pular as musicas pra frente:

ff.onRelease = function ()
{
	ligado = false;
	som.stop();
};
E, para pular musicas para traz?Não estou conseguindo.

 

2) Outra coisa é o seguinte:

no inicio dop código tem o seguinte:

...
var musicas:Array = new Array();
...
musicas[0] = "audio/audio1.mp3";
musicas[1] = "audio/audio2.mp3";
musicas[2] = "audio/audio3.mp3";
Eu gostaria de criar uma função aonde eu não precisasse fazer musicas[0], etc.. e sim que a função contasse quantas musicas tem no diretorio e pegasse as tags id3 delas automaticamente alem de alterar essa parte do código:

if (i<5)  // auterar o valor do i a cada musica excluida ou acrecentada no diretorio de musicas.
			i++;
		else
			i = 0;

		ligado = true;
	}
Desde ja meu muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para retroceder, você precisa mudar o código.

Utilize assim:

 

var som:Sound = new Sound();
var musicas:Array = new Array();
var i:Number = 0;
var vol:Number = 100;
var verifica, pos:Number;
var ligado:Boolean;
var acao:String;
stop();
musicas[0] = "audio/audio1.mp3";
musicas[1] = "audio/audio2.mp3";
musicas[2] = "audio/audio3.mp3";
function passai(dir) {
	if (dir == "ff") {
		i++;
	} else {
		i--;
	}
	if (i == musicas.length) {
		i = 0;
	} else if (i<0) {
		i = musicas.length-1;
	}
}
function playMusic(dir) {
	passai(dir);
	som.loadSound(musicas[i], true);
	artista.text = "Artista: "+som.id3.artist;
	musica.text = "Musica: "+som.id3.songname;
	v3.text = som.getVolume()+"%";
}
function setaVolume(v) {
	som.setVolume(v);
	vol = v;
}
playMusic("ff");
som.onSoundComplete = function() {
	playMusic("ff");
};
v1.onRelease = function() {
	verifica = som.getVolume();
	setaVolume(verifica+5);
};
v2.onRelease = function() {
	verifica = som.getVolume();
	setaVolume(verifica-5);
};
stopi.onRelease = function() {
	som.stop();
};
pausi.onRelease = function() {
	acao = "pause";
	pos = som.position/1000;
	som.stop();
};
plai.onRelease = function() {
	if (acao == "pause") {
		som.start(pos);
		acao = "";
	} else {
		som.start();
	}
};
ff.onRelease = function() {
	playMusic("ff");
};
rr.onRelease = function() {
	playMusic("rr");
};

Agora para buscar as musicas do diretorio, eu não conheco nehuma classe no as2 que le diretorio, mas você pode disponibilizar as musicas em xml e carregar com a classe XML.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta ok

 

To quase la.

veja a linha:

som.loadSound(musicas[i], true);
la em cima, precisa dizer o caminho todo de cada mp3

musicas[0] = "audio/audio1.mp3";
musicas[1] = "audio/audio2.mp3";
musicas[2] = "audio/audio3.mp3";
Eu to querendo arrumar uma forma ou função que faça isso.

leia no diretorio audio/, o nome de cada uma delas para por em

som.loadSound(musicas[i], true);
Para que, se acaso tirar alguma musica ou por nÃo precise alterar no .fla e que, ao ler o nome de cada musica, de tudo certo.

e outra função que leia no diretorio audio/, quantas musicas tem la para por em

if (i<5)
			i++;
		else
			i = 0;

		ligado = true;
	}
Só isso ta FALTANDO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí é que tá.

você não vai precisar definir a comparação de i como 5. Perceba que no código que eu alterei, eu fiz a verificação pelo tamanho do array musicas.

 

if (i == musicas.length) {

E como eu disse, eu não conheço, e até onde eu saiba o flash não le arquivos em um diretorio.

Mas você pode utilizar a classe loadVars ou XML para acessar uma página ASP que utilize o componente FSO para ler e retornar os dados no flash.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta. Ok.

 

Ja fiz uma pagina em php contendo um script que cria uma array contendo os nomes das musicas do diretorio e uma varivel com o numero total de musicas no diretorio.

Pergunta?

 

Agora, no Flash, como faço para entregar essa array do php contendo os nomes das musicas do diretorio e a varivel com o numero total de musicas no diretorio?

 

Da uma luz!

 

To quase la!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o codigo para carregar:

 

var myLV:LoadVars = new LoadVars();
myLV.onLoad = function(sucess:Boolean){
if(sucess==true){
	  musicas = this.dados.split(",");

}else{
trace("Problemas ao carregar o arquivo);
}
}
myLV.load("meuarquivo.php");

Daí a adaptação do resto do codigo, ficaria assim:

 

var som:Sound = new Sound();
var musicas:Array;var i:Number = 0;
var vol:Number = 100;
var verifica, pos:Number;
var ligado:Boolean;
var acao:String;
stop();

var myLV:LoadVars = new LoadVars();
myLV.onLoad = function(sucess:Boolean){
if(sucess==true){
	  musicas = this.dados.split(",");

}else{
trace("Problemas ao carregar o arquivo");
}
}
myLV.load("meuarquivo.php");

function passai(dir) {
	if (dir == "ff") {
		i++;
	} else {
		i--;
	}
	if (i == musicas.length) {
		i = 0;
	} else if (i<0) {
		i = musicas.length-1;
	}
}
function playMusic(dir) {
	passai(dir);
	som.loadSound(musicas[i], true);
	artista.text = "Artista: "+som.id3.artist;
	musica.text = "Musica: "+som.id3.songname;
	v3.text = som.getVolume()+"%";
}
function setaVolume(v) {
	som.setVolume(v);
	vol = v;
}
playMusic("ff");
som.onSoundComplete = function() {
	playMusic("ff");
};
v1.onRelease = function() {
	verifica = som.getVolume();
	setaVolume(verifica+5);
};
v2.onRelease = function() {
	verifica = som.getVolume();
	setaVolume(verifica-5);
};
stopi.onRelease = function() {
	som.stop();
};
pausi.onRelease = function() {
	acao = "pause";
	pos = som.position/1000;
	som.stop();
};
plai.onRelease = function() {
	if (acao == "pause") {
		som.start(pos);
		acao = "";
	} else {
		som.start();
	}
};
ff.onRelease = function() {
	playMusic("ff");
};
rr.onRelease = function() {
	playMusic("rr");
};

E isso considerando que seu php retorne assim:

 

&dados=arquivo1mp3,arquivo2.mp3,arquivo3.mp3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei mas só da indefinido e não carrega.

Tem como achar em que ponto ta falhando?

 

o c ódigo que usei no php é simples:

<?php
$dir	= 'audio/';
$dir_musicas = scandir($dir);
$quais_musicas = array_splice($dir_musicas, 2);
$quantas_musicas = count($quais_musicas);
//print_r ($quais_musicas);
//print ($quantas_musicas);
?>
e retorna no print

Array ( [0] => audio1.mp3 [1] => audio2.mp3 [2] => audio3.mp3 [3] => audio4.mp3 [4] => audio5.mp3 ) 5

Só + uma pergunta:

 

O php tem que retornar uma matriz com esses valores ou uma variavel tipo string com o valor abaixo?

&dados=arquivo1mp3,arquivo2.mp3,arquivo3.mp3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá dando erro por causa da sua ultima pergunta aí...

 

você tem que colocar o seu resultado na estrutura que pasei..

 

&dados=arquivos separados por virgula

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, na boa.

 

To tendo um pouco de dificuldade em conseguir fazer isso.

você não teria um pequeno exemplo que poderia postar de como fazer essa interação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte amigo.

Se você utilizar o ultimo codigo completo do flash que postei, vai dar certo a parte do flash.

Daí, o php não posso te ajudar, pq não mecho com isso.

 

Mas você tem que fazer com que o retorno do php retorne assim:

 

&dados=arquivo1mp3,arquivo2.mp3,arquivo3.mp3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, isso ja consegui mas não esta funcionando

meu código php:

<?php
$dir	= 'audio/';
$dir_musicas = scandir($dir);
$quais_musicas = array_splice($dir_musicas, 2);
$quantas_musicas = count($quais_musicas);

$qual_musica = implode(",",$quais_musicas);
print "&dados=$qual_musica";
?>

O que isso imprime na tela:

&dados=audio1.mp3,audio2.mp3,audio3.mp3,audio4.mp3,audio5.mp3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize dois frames.

No primeiro, coloque esta parte do codigo:

 

var som:Sound = new Sound();
var musicas:Array;
var i:Number = 0;
var vol:Number = 100;
var verifica, pos:Number;
var ligado:Boolean;
var acao:String;
stop();

var myLV:LoadVars = new LoadVars();
myLV.onLoad = function(sucess:Boolean){
if(sucess==true){
	  musicas = this.dados.split(",");
	  play();

}else{
trace("Problemas ao carregar o arquivo");
}
}
myLV.load("meuarquivo.txt");

 

 

No segundo, coloque esta:

function passai(dir) {
	if (dir == "ff") {
		i++;
	} else {
		i--;
	}
	if (i == musicas.length) {
		i = 0;
	} else if (i<0) {
		i = musicas.length-1;
	}
}
function playMusic(dir) {
	passai(dir);
	som.loadSound(musicas[i], true);
	artista.text = "Artista: "+som.id3.artist;
	musica.text = "Musica: "+som.id3.songname;
	v3.text = som.getVolume()+"%";
}
function setaVolume(v) {
	som.setVolume(v);
	vol = v;
}
playMusic("ff");
som.onSoundComplete = function() {
	playMusic("ff");
};
v1.onRelease = function() {
	verifica = som.getVolume();
	setaVolume(verifica+5);
};
v2.onRelease = function() {
	verifica = som.getVolume();
	setaVolume(verifica-5);
};
stopi.onRelease = function() {
	som.stop();
};
pausi.onRelease = function() {
	acao = "pause";
	pos = som.position/1000;
	som.stop();
};
plai.onRelease = function() {
	if (acao == "pause") {
		som.start(pos);
		acao = "";
	} else {
		som.start();
	}
};
ff.onRelease = function() {
	playMusic("ff");
};
rr.onRelease = function() {
	playMusic("rr");
};
stop();

O problema é que não está dando tempo de carregar o array, confome explicado neste post:

http://wevertonn.wordpress.com/2008/01/29/...s-nao-funciona/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode deixar no segundo frame.

 

Se quiser, crie uma camada so para os botões, daí eles abrangerão o primeiro e o segundo frame.

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

No 1º frame, puz um preloader.

Me responde uma curiosidade:

 

o código abaixo

....
myLV.load("musicas.php");
myLV.onLoad = function(sucess:Boolean){
if(sucess==true){
	  musicas = this.dados.split(",");
....
principalmente:

musicas = this.dados.split(",");
Não obriga as musicas a ficarem no mesmo diretorio que o swf?

 

Se sim, como faço para infomar que o diretório é outro?

No codigo não vejo lugar algum fazendo mensão ao diretorio onde estão as musicas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou você informa isso na hora de escrever o retorno no php:

 

&dados=musicas/audio1.mp3,musicas/audio2.mp3

Ou você coloca assim nessa linha:

 

som.loadSound("musicas/"+musicas[i], true);

Compartilhar este post


Link para o post
Compartilhar em outros sites

so da indefinido.

Estou postando o arquivo novamente, por favor. Baixe e de uma olhada, talves tenha alguma coisa de errado.

 

http://www.carcleo.com/player.zip

 

Em tempo, qundo puz no 1o frame aquela parte que tu falou, v eja o que saiu n o output:

Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/undefined'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/undefined'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/undefined'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/undefined'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/undefined'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/undefined'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'
Error opening URL 'file:///C|/Program%20Files/Apache%20Group/Apache2/htdocs/php/player/projeto/musicas/$qual_musica";

?>'

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.