Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com para fazer um loop


Leandro S Alves

Pergunta

Olá galera, tenho um arquivo que reproduz uma música e quero que a música repita quando terminar, fique dando loop.

O código é esse...

mNumber = 0;
trilha = new Sound();
listaMP3 = new XML();
listaMP3.ignoreWhite = true;
listaMP3.load("lista.xml");
listaMP3.onLoad = function() {
    playlist = listaMP3.childNodes;
    musica = playlist[0].attributes.url;
    trilha.loadSound(musica, true);
    trilha.start(0, 0);
    carregou = true;
    dur = trilha.duration;
    pos = trilha.position;
};
trilha.onID3 = function() {
    artista = trilha.id3.artist;
    titulo = trilha.id3.songname;
    info = "<font color='#475848'>"+artista+" </font>. "+titulo;
    label_.leg.info = info;
};
trilha.onSoundComplete = function() {
    mute = true;
    if (mNumber<playlist.length) {
        mNumber++;
        musica = playlist[mNumber].attributes.url;
        trilha.loadSound(musica, true);
        info = unescape(trilha.id3.artist)+" :: "+unescape(trilha.id3.songname);
        label.leg.info = info;
        stopado.gotoAndStop(1);
        trilha.start();
        display.mute = false;
    }
};
//
stop();

Espero uma ajuda. B)

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Olá Leandro ^_^

Leia um pouco :)

Aqui se encontra a função bem auto-explicativa:

trilha.onSoundComplete = function() {
    mute = true;
    if (mNumber<playlist.length) {
        mNumber++;
        musica = playlist[mNumber].attributes.url;
        trilha.loadSound(musica, true);
        info = unescape(trilha.id3.artist)+" :: "+unescape(trilha.id3.songname);
        label.leg.info = info;
        stopado.gotoAndStop(1);
        trilha.start();
        display.mute = false;
    }
};
Temos que Trilha é um Sound e temos nela um evento 'onSoundcomplete' ou seja 'Quando o som for completado' é Ai que temos que procurar Vamos lá:
if (mNumber<playlist.length) {
Provavelmente se o numero da musica atual for menos que o nuemro total de músicas, ele passa para a próxima música, seria o minimo que se poderia fazer....
mNumber++;
Resumindo a musica que você toca é relacionada a variável mNumber entendido como 'Music number' ou ' numero da musica' Quando esse valor é alterado apra mais ele passa para a 'proxima' musica... Se não quiser q ele passe faça o seguinte: Dentro de 'trilha.onSoundComplete' vamos adicionar uma condição que você vai satisfazer com 1 botão à inicio, o botão 'Loop' :) Criamos um botão chamado loop tanto nome quanto instância, e vou setar uma variável chamada loopStatus;
mNumber = 0;
trilha = new Sound();
listaMP3 = new XML();
listaMP3.ignoreWhite = true;
listaMP3.load("lista.xml");
var loopStatus:Boolean = false; // aqui eu declarei sua variavel porem como você não informou o fonte inteiro não sei aonde ficam suas declarações de variáveis;
var meuBotao:MovieClip = _root.loop;

meuBotao.onPress = function(){

if(loopStatus){
_root.loopStatus=false;
}else{
_root.loopStatus=true;
}

}
Agora que já temos nosso stauts de loop vamos ao código do seu som:
trilha.onSoundComplete = function() {
    mute = true;

    if (mNumber<playlist.length) {
         
        if(!_root.loopStatus){ //ou seja so vai para a proxima musica se seu loop estiver desabilitado :)
        mNumber++;
        }
        musica = playlist[mNumber].attributes.url;
        trilha.loadSound(musica, true);
        info = unescape(trilha.id3.artist)+" :: "+unescape(trilha.id3.songname);
        label.leg.info = info;
        stopado.gotoAndStop(1);
        trilha.start();
        display.mute = false;
        
    }
};
Bom em breve é isso, caso não funcione, passe para nós o código fonte, e irei constatar se foi erro nosso :) Mas caso funcione, fico feliz por ter lhe ajudado ! Abraços Pooh há ! esqueci de avisar, não foi encontrado no que você nos disponibilizou uma condição de 'fim de lista de reprodução' ou seja quando chega ao fim das musicas ele para de tocar, o que poderia ser meio desconcertante. Se quiser adicionar isso apenas coloque:
trilha.onSoundComplete = function() {
    mute = true;

    if (mNumber>playlist.length) {//aqui foi modifica para '>' e não '<'
        mNumber = 0;
    }

    if (!_root.loopStatus) {//ou seja so vai para a proxima musica se seu loop estiver desabilitado :)
        mNumber++;
    }
    musica = playlist[mNumber].attributes.url;
    trilha.loadSound(musica,true);
    info = unescape(trilha.id3.artist)+" :: "+unescape(trilha.id3.songname);
    label.leg.info = info;
    stopado.gotoAndStop(1);
    trilha.start();
    display.mute = false;

};

Retirei a corrente da sua condicional e coloquei 1 loop infinito

Imagino que funcione hahaha

senão, volte aqui que lhe ajudaremos :)

Abraços !

Pooh

Editado por Pooh
Link para o comentário
Compartilhar em outros sites

  • 0

LEL....

Porque provavelmente isso dae é um tocador...

Não uma background music...

A idéia da evolução do Flash é usar mais actionScript e menos timeline...tanto que no flash CS4 nema dianta que você não consegue colocar Script em objetos como movieClips etc... a idéia é elimina isso.

Porém se isso resolver o problema dele sem complicações, ele deve adotar o método que melhor se encaixar no projeto dele, seja corrigir o actionSCript ou seja implementar um 'quebra-galho' na timeline;

Anyway

Abraços

Pooh

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...