claudiomma 0 Denunciar post Postado Agosto 15, 2008 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 XMLvar 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
Eder Fortunato 15 Denunciar post Postado Agosto 15, 2008 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
claudiomma 0 Denunciar post Postado Agosto 15, 2008 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
claudiomma 0 Denunciar post Postado Novembro 5, 2008 Por favor, continuo esperando ajuda de todos. abraço Compartilhar este post Link para o post Compartilhar em outros sites
Freelife 2 Denunciar post Postado Novembro 5, 2008 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
claudiomma 0 Denunciar post Postado Novembro 11, 2008 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
Freelife 2 Denunciar post Postado Novembro 11, 2008 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
Freelife 2 Denunciar post Postado Novembro 11, 2008 tá... responde uma coisa... o cálculo da porcentagem já está pronto? Compartilhar este post Link para o post Compartilhar em outros sites
claudiomma 0 Denunciar post Postado Novembro 11, 2008 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
Freelife 2 Denunciar post Postado Novembro 11, 2008 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
claudiomma 0 Denunciar post Postado Novembro 11, 2008 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
Freelife 2 Denunciar post Postado Novembro 11, 2008 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
claudiomma 0 Denunciar post Postado Novembro 11, 2008 valeu... vou testar aqui qq coisa posto aí... caso precise de algo em php/mysql estarei a seu dispor... abraço Compartilhar este post Link para o post Compartilhar em outros sites
Freelife 2 Denunciar post Postado Novembro 11, 2008 opa... quando eu puder ajudo ainda mais... sobre php... eu abri um tópico que talvez você possa me ajudar : http://forum.imasters.com.br/index.php?showtopic=314384 eu não sei nada de php... se não conseguir com o flash posta de novo... Abraços e até mais Compartilhar este post Link para o post Compartilhar em outros sites
Freelife 2 Denunciar post Postado Novembro 12, 2008 e aí... resolvido??? Funcionou??? abraços Compartilhar este post Link para o post Compartilhar em outros sites
crica 0 Denunciar post Postado Novembro 12, 2008 Claudio, dá uma olhada nesse site acho que vai esclarecer algumas dúvidas tuas... http://blog.ericksouza.com/classe-sound/ bye Compartilhar este post Link para o post Compartilhar em outros sites
claudiomma 0 Denunciar post Postado Novembro 12, 2008 Obrigado Crica... vou analizar e se tudo der certo vou postar ele inteiro aqui pra galera usar tb... valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites