Ir para conteúdo

POWERED BY:

Arquivado

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

claudiomma

gostaria que mostrasse a porcentagem de carregamentodo mp3

Recommended Posts

Galera, venho pedir ajuda em um código de mp3 player que consegui na net(não lembro o nome do autor).

 

Seguinte, ele tem bts de avançaR, pause, play, stop e voltar.

 

porem, a musica carrega sem o usuário ver a porcentagem que ela está carregando, um preloader bem dizendo, para cada mp3.

 

segue o código:

 

CODE
// Criamos uma variavel do tipo XML

var oXML:XML = new XML();

// Ignoramos os espaços em branco

oXML.ignoreWhite = true;

// Variáveis com os dados que serão utilizados

// Quantidade de itens

var quant:Number;

// Contem as urls das musicas (prefira colocar o caminho completo, por exemplo http://www.seusite.com/musica.mp3, para que não haja problemas com navegadores diferentes)

var urls:Array = new Array();

// Contem os nomes das musicas

var nomes:Array = new Array();

// Nomes dos artistas

var artistas:Array = new Array();

// Informações adicionais

var infos:Array = new Array();

// Quanto o arquivo for carregado

oXML.onLoad = function():Void{

// Valor de quant

quant = this.firstChild.childNodes.length;

// Laço for iniciado com i =0 até i=quant

for(var i:Number=0; i<quant; i++){

//preenchemos as variaveis com seus dados correspondentes.

//para compreender a logica usado de uma passada no artigo sobre XML

urls = this.firstChild.childNodes.childNodes[0].childNodes.toString();

nomes = this.firstChild.childNodes.childNodes[1].childNodes.toString();

artistas = this.firstChild.childNodes.childNodes[2].childNodes.toString();

infos = this.firstChild.childNodes.childNodes[3].childNodes.toString();

}

//chamamos uma função nomeada trocar_musica com parametro m

trocar_musica(m);

}

//carregamos o arquivo .XML

oXML.load("http://www.seusite.com.br/player.xml");

//criamos uma variavel numerica que armazena o numero da musica tocando

var m:Number = 0;

//criamos uma variavel do tipo Sound nomeada som_sound

var som_sound:Sound = new Sound();

//criamos uma função chamada trocar_musica que irá, como o nome já diz, trocar as musicas.

//o parametro n é o numero da musica a ser tocado

function trocar_musica(n:Number){

//pára o som tocado

som_sound.stop();

//carregamos o arquivo o arquivo numero n do XML em modo sem Streaming

som_sound.loadSound(urls[n],false);

//preenche o campo de texto com as informações correspondentes

status_txt.text="" + nomes[n];

//status_txt.text+="\nArtista: " + artistas[n];

//status_txt.text+="\nInformações: " + infos[n];

//quando o som for carregado completamente

som_sound.onLoad=function(){

//inicia o som

som_sound.start(0,0);

//torna o botão play_btn desativado

play_btn.enabled=false;

}

}

//definimos uma variavel nomeada pausar

var pausar:Number = 0;

//quando o botão play_btn for pressionado

play_btn.onPress=function():Void{

//inicia o som no instante definido pela variavel pausar

som_sound.start(_root.pausar,0);

//desabilita o botão play_btn

play_btn.enabled=false;

//reabilita o botão pause_btn

pause_btn.enabled=true;

}

//quando o botão stop_btn for pressionado

stop_btn.onPress=function():Void{

//para o som

som_sound.stop();

//reabilita o botão play_btn

play_btn.enabled=true;

//define o valor da variavel pausar para 0

pausar = 0;

//desabilita o botão pause_btn

pause_btn.enabled=false;

}

//quando o botão pause_btn for pressionado

pause_btn.onPress=function():Void{

//reabilita o botão play_btn

play_btn.enabled=true;

//definimos o valor da variavel pausar (o /1000 converte milisegundos em segundos)

pausar = som_sound.position/1000;

//paramos o som

som_sound.stop();

}

//quando o botão sforw_btn for pressionado

sforw_btn.onPress=function(){

//criamos um intervalo nomeado intID que executa a função

intId = setInterval(function(){

//verificamos se há tempo suficiente no som para avançar

//caso sim

if(som_sound.position+1000<=som_sound.duration){

//criamos uma variavel numerica que armazena a posição (em segundos) em que o som está, e soma 1 segundo

var pos:Number = ((som_sound.position)/1000)+1;

//pára o som

som_sound.stop();

//recomeça o som no instante armazenado na variavel pos

som_sound.start(pos, 0);

}

//caso não

else{

//limpamos o intervalo

clearInterval(intId);

}

//o intervalo definido é de 50milisegundos

},50);

}

//quando o botão sforw_btn for solto, ou o mouse sair da area, ou se o mouse for pressionado e levado para fora

sforw_btn.onDragOut = sforw_btn.onRelease = sforw_btn.onRollOut = function(){

//limpamos o intervalo

clearInterval(intId);

}

//as linhas a seguir são semelhantes, mas ao invés de somar 1 segundo. Subtraimos 1 segundo.

sback_btn.onPress=function(){

intId = setInterval(function(){

if(som_sound.position-1000>=0){

var pos:Number = ((som_sound.position)/1000)-1;

som_sound.stop();

som_sound.start(pos, 0);

}

else{

clearInterval(intId);

}

},50);

}

sback_btn.onDragOut = sforw_btn.onRelease = sforw_btn.onRollOut = function(){

clearInterval(intId);

}

//criamos uma variavel do tipo booleana chamada "loop" que armazenará o estado do loop

var loop:Boolean = false;

//alteramos o texto "loop_txt" para o estado desligado

loop_txt.text = "Loop desligado"

//quando o botão loop_btn for pressionado

loop_btn.onPress=function(){

//se a variavel loop for verdadeita

if(loop){

//torna a variavel loop falsa

loop = false;

//altera o campo de texto para o estado desligado

loop_txt.text = "Loop desligado"

}

//caso o loop seja falso

else{

//torna a variavel loop verdadeira

loop = true;

//altera o campo de texto para o estado ligado

loop_txt.text = "Loop ligado"

}

}

//quando o som terminar de ser tocado

som_sound.onSoundComplete=function(){

//se a variavel loop for verdadeira

if(loop){

//inicia o som novamente

som_sound.start(0,0);

//define a variavel pausar para 0 (para não haver problema algum)

pausar = 0;

}

//caso contrário

else{

//pára o som

som_sound.stop();

//se o m (musica atual) for menor que a quantidade total de musica

if(m<quant-1){

//incrementa a variavel m em uma unidade (equivalente a m = m+1)

m++;

//troca a musica para o novo m

trocar_musica(m);

}

//caso não

else{

//torna o m=0

m=0;

//troca a nusica para o novo m, reiniciando as musicas

trocar_musica(m);

}

}

}

//quando o botão next_btn for pressionado

next_btn.onPress=function(){

//se m (musica atual) for menor que a quantidade de musicas

if(m<quant-1){

//incrementa em uma unidade a variavel m (m = m+1)

m++;

//troca a musica para o novo m

trocar_musica(m);

}

}

//quando o botão prev_btn for pressionado

prev_btn.onPress=function(){

//se m (musica atual) for maior que 0

if(m>0){

//decrementa em uma unidade a variavel m (m = m-1)

m--;

//troca a musica para o novo m

trocar_musica(m);

}

}

 

player.xml

 

CODE
<?xml version="1.0" encoding="utf-8"?>

<player>

 

<musica>

<url>http://www.seusite.com.br/musica1.mp3</url>

<nome>nome da música</nome>

<artista>nome da música</artista>

 

</musica>

<musica>

<url>http://www.seusite.com.br/musica2.mp3</url>

<nome>nome da música</nome>

<artista>nome da música</artista>

 

</musica>

</player>

GOSTARIA DE SABER COMO COLOCAR UM PRELOADER PARA AS MÚSICAS.

 

VALEU

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro da função "trocar_musica" é onde inicia o carregamento, lá tem o objeto "som_sound"

é ele que tem a referencia do carregamento, use as propriedades som_sound.getBytesLoaded e som_sound.getBytesTotal

para saber quanto já foi carregado, e assim fazer o pre-loadgin

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, só que não saco muito bem de AS e não sei como encaixar e fazer com que o um campo de txt dinamico receba a porcentagem... poderia me ajudar??? desde já agradeço... abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, continuo esperando ajuda de todos.

 

abraço

acho que essa consigo responder...

 

quando você criou o campo de texto dinâmico você deu a ele um "instance name" certo?! mas ali tbém tem um campo chamado var... você pode atribuir um nome a essa var, por exemplo var: porcento, aí no código que você criou faça com que essa variável receba o resultado do cálculo.

 

Não sei se tem um jeito mais fácil, mas o que eu sei é esse... espero ter ajudado.

 

Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas é esse o ponto em que estou com maior dificuldade...

 

como consigo colocar o carregador e mostrar a porcentagem pro visitante...

 

Digo novamente, não sou expert em AS, por isso a dificuldade, esse código eu peguei na net e não lembro do nome do autor....

 

Peço a ajuda de todos pois o player é muito bom, só falta isso mesmo.

 

valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá... responde uma coisa... o cálculo da porcentagem já está pronto?

 

você pode usar isso:

var carregado:Number = suavariávedeSom.getBytesLoaded(); Retorna o número de bytes carregados.

var total:Number = suavariávedeSom.getBytesTotal(); Retorna o número de bytes no total.

 

se eu não me engano dá pra tentar fazer algo assim:

 

porcento = carregado * 100 /total

 

mostrador = porcento

 

acho que funfa.. se alguém mais puder ajudar...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

não... não sei como colocar e fazer... sou fraco em AS...

 

me ajuda aí mano, o codigo tá completo aí em cima...

 

segue o que tem no fla:

 

campo de texto que recebe o nome da musica por xml = status_txt

bt play = play_btn

bt stop = stop_btn

bt pause = pause_btn

bt voltar = prev_btn

bt avançar = next_btn

 

 

Obrigado pela ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou tentar... mas tbém sou novo em as...

eu não sei qual o nome do campo de texto onde você vai mostrar a pocentagem,

mas tenta fazer assim:

 

inicio = function(){

intervalo();

limpar();

}

 

contador = function(){

 

var carregado:Number = som_sound.getBytesLoaded(); //Retorna o número de bytes carregados.

var total:Number = som_sound.getBytesTotal(); //Retorna o número de bytes no total.

 

//se eu não me engano dá pra tentar fazer algo assim:

 

porcento = carregado * 100 /total;

 

var da sua caixa de texto = porcento;

}

 

intervalo = function(){

var progresso = setInterval(contador, 1000);

}

 

limpar = function(){

clearInterval(progresso);

}

 

 

aí você chama a função no play por exemplo.... dentro da função do botão play você coloca: intervalo();

 

acho que vai dar certo...

 

eu não tenho como testar aqui onde estou...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como você encaixar os códigos no lugar correto???

 

no codigo, assim que le o xml o campo dinâmico recebe o nome da musica, o nome do campo é "status_txt".

 

Então estava pensando em antes do campo receber o nome da música, mostrar o carregamento e aí sim, depois do 100% aparece o nome da música...

 

Tem como???

 

Mais uma vez obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

aí já é um pouco mais complicado de fazer, eu não manjo nada de xml... e como não tenho o flash aqui para testar não sei se consigo...

 

 

ahhh acabei de pensar em uma forma... faz um if...

 

tipo assim

 

if(porcento < 100){

status = porcento;

}

else{

status = nome da música;

}

 

sobre colocar os códigos no lugar certo agora não posso fazer... mas tenta fazer assim... esse if você aí em cimacoloca dentro da função contador...

 

a função intervalo você chama ela dentro da função do botão play... desculpe é que aqui onde estou não dá mesmo pra ajudar mais que isso....

 

obs... não esqueça de colocar o nome status na variável da sua caixa de texto...

 

Abraços

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.