Ir para conteúdo

POWERED BY:

Arquivado

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

ticarp

Botão Desligar Som.

Recommended Posts

Olá povo...

Criei um botão que tem a função de parar todos os sons da cena, gostaria de saber se ao invés de parar da forma normal "seca" é possível q o som vá abaixando a té sumir e parar.

 

o código do botão é essa:

 

on (release) {

stopAllSounds ();

}

 

 

Abração, Tiago.

PS: Estou voltando a mecher com flash agora. alguem poderia me explicar oq siginifica () nos codigos... e quala função das chaves {}...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todo o esqueminha está sendo feito em AS. não sei se pode mesclar com painel properties...Queria tudo em AS.Abração, Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você vai fazer o seguinte:

 

Pra criar seu arquivo de som, você vai dar a seguinte ação no botão:

 

on (release) {

stopAllSounds();

meusom = new Sound();

meusom.attachSound("som1");

meusom.start(0,100);

_root.meusom.setVolume(100);

}

 

 

Esse StopallSound, é que se você tiver outro som reproduzindo no site, ele corta pra reproduzir só esse que vai entrar agora, o som1 é um linkage de uma mp3 que importei pra biblioteca, então eu puxo ele pelo nome dado ao linkage, isso acho que você sabe fazer, mas se não souber poste aqui, o setVolume, é um valor inicial pro seu som começar, porque se no caso eu baixar ele pro valor 0 (zero) como vou te explicar abaixo, quando você clicar nele denovo, ele não vai voltar ao 100, ou seja, vai ficar mudo e você vai falar que eu acabei com seu script, mas tudo bem, agora que dei um nome de meusom, para meu arquivo de som, vou te ensinar a fazer esse efeito com o volume que você quer.

 

Primeiro você cria um movieclip com 3 frames, daí no primeiro frame desse movieclip, você coloca a ação stop();

Feito isso você vai pro segundo frame desse movieclip e coloca a ação:

 

_root.meusom.setVolume(_root.meusom.getVolume() - 4);

if (_root.meusom.getVolume()<=0) {

_root.meusom.setVolume(0);

gotoAndPlay(1);

}

 

então ele vai buscar o setVolume de "meusom" e vai pegar o valor de altura dele com getVolume(), e vai tirar 4 desse volume, então você vai criar mais um frame nesse movieclip e vai colocar a ação:

gotoAndPlay(2);

pra ele voltar e baixar mais 4, isso vai criar um loop, até ele baixar todo o volume, porisso que tem a ação alí,

se o volume do meusom, for igual ou menor que 0, ele vai marcar o setVolume como 0, e dar um goto pro frame1, que é onde tem a ação stop do movieclip, isso serve pra ele parar de abaixar.

 

Agora pra acessar isso, você vai precisar colocar uma instancia pra esse movieclip, pois quando carregar o frame, o stop estará ali´impedindo dele baixar o volume direto, então vamos usar aqui a instancia "diminuir" (sem aspas), e fazer um novo botão pra controlar esse movieclip, então faça um botão qualquer pra baixar o volume, e coloque nele a seguinte ação:

 

on (release) {

_root.diminuir.gotoAndPlay(2);

}

 

então fazendo isso ele vai entrar naquele loop e vai diminuindo de 4 em 4, até chegar ao zero, não é difícil de fazer, qquer duvida poste aí denovo.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande carneirinho... já estamos quase lá...

Olha na parte teorica acho consegui entender tudo. so não entendi se o "meusom" está associado aos arquivos de som (som01, som02) ou a cadama onde tudo ocorre que se chama som. experimentei trocar o nm da camada pra outra coisa e deu erro...

 

Pois bem na parte pratica estou tendo dificuldade no finalzinho...

 

Veja, a principio havia feito no frame 1 do filme tres circulos.. 3 botões...

 

2 deles acionando dois sons distintos da biblioteca e 1 para parar.

 

beleza... então seguindo suas dicas o botão de parar que estava no palco eu tirei a ação dele para desligar todos os sons e o transformei num MC.

 

Fui lá e inseri todos os códigos no primeiro e no segundo frame do MC... ai chegou no terceiro eu criei um botão é isso? não entendi direito aquele lance de instancia... e coloquei o codigo dentro do botão q tá dentro do MC.

 

Só que esse botão num ta nem aparecendo na tela. quando coloco pra exibir.

Os dois de dar play funcionam numa boa mas o de parar nem para mais.

estou colocando o .fla pra download, se você quiser dar uma olhada:

 

LINK

 

No aguardo,

Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Tiago, você fez 90% das coisas certas, eu ví seu arquivo, vou te explicar mais um pouco a lógica, do porque eu criei o movieclip, então vamos supor que você tem um um volume que vai de 0 até 200, mas o usual é 100, então você quer diminuir esses 100 aos poucos até ele chegar a zero, então vamos ter que fazer uma ação pra ele tirar de tanto em tanto, até chegar no zero, aqui eu optei por tirar de 4 em 4, mas pode ser qquer valor numérico, entendeu?

Então eu criei um script pra tirar 4, do valor de 100 do setVolume, daí como fazer pra ele tirar mais 4?Eu tenho que fazer ele criar um loop pra ir tirando 4 cada vez que passar pelo frame, porisso então fiz um movieclip, com 3 frames, assim no segundo frame ele diminui 4, e no ultimo ele dá um loop pro 2 e tira mais quatro, e assim vai até zerar o setVolume.

Agora o que aconteceria se eu não fizesse o primeiro frame com o stop();? Acontecería que ele assim que carregasse o filme já entraría em loop, porque ía dar de cara com a ação pra diminuir o setVolume entendeu? Porisso tive que criar o movieclip, pra isolar a ação e só usar quando necessário.

Então aquele botão que você colocou no primeiro frame do movieclip, você pode deletar ele daquele frame, daí você abre a biblioteca e joga ele no palco, deixando os movieclips vazios só com as ações no primeiro, segundo e terceiro frame, que no seu arquivo está certo.

Então como faremos pra chegar ao segundo frame do movieclip pra começar o loop de abaixar som?Nós teremos que dar uma instancia pra esse movieclip, tipo você clica nele e na barra de propriedades, vai aparecer uma caixia pra você digitar um nome de instancia pra ele, no caso aqui é "diminuir" (sem aspas), então feito isso, você vai dar as ações no botão que está no placo assm :

 

on (release) {

_root.diminuir.gotoAndPlay(2);

}

 

então ele vai achar o diminuir que está no palco e vai acessar o frame 2 dele, que é onde começa o loop entendeu?

 

Desculpe ser chato, mas é que é importante você entender o que está fazendo pra aprender a fazer, se eu fizer o arquivo todo pra você perde a importancia do forum entendeu?

 

Seu arquivo deverá ficar parecido com esse:

 

http://gcarneirinho.sites.uol.com.br/sounds.swf

qquer coisa poste aí novamente.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Carneirinho...Chato?!?! você tá brincando... :D Cara tô muito feliz de tá aprendendo os siginificado das coisas...Fico muito grato por usa paciencia!!Olha...Já corrigi tudo q tinha feito de errado... pronto... tá do jeito que eu queria!!!! Muito bom!!Só agora te explorando um pouco...oq significa:_root?aqui:meuSom.attachSound("som01"); esse "meuSom" esta associado a q?? Ou é um comando proprio da liguadem AS??por fim:existe loops infinitos pra som ou a gente sempre tem q setar um valor?Se fosse possível continuar essa nossa "aula" a gente podia partir pra:transição entre as musicas... eu to na "1" quando clico na "2" a "1" vai abaixando e a "2" vai aumentando... até a 1 parar e a 2 ficar tocando em 100. isso existe?Abração, Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o flash tem caminhos relativos e absolutos, seria como no html você usar, o caminho http://www.seusite.com.br/imagem.jpg , esse caminho acessaria o site de qquer outro site onde estaria o botão certo?Agora se você usar somente imagem.jpg, ele vai achar a imagem com esse nome que está na pagina, então imagine algo assim, vamos supor que você tenha dois movieclips no palco, por exemplo, esse dimunuir e um outro qualquer, por exemplo, o aumentar, e dentro do aumentar você quer dar uma ação pra reproduzir o filme diminuir, você vai ter que dar um caminho pro flash encontrar, então você dá o caminho _root.diminuir.ação ou seja, dentro de palco (_root) tem um movieclip instanciado como diminuir que vai reproduzir a partir do frame 2, entendeu?Então o _root é usado como caminho absoluto a partir do palco, agora se você está dentro do movieclip diminuir, e dentro dele tem mais dois movieclips instanciados, daí você pode usar o _parent, que significa que está no mesmo nivel deonde se encontra o botão, que está nesse movieclip, eu prefiro usar mais o caminh absoluto, mas muitos preferem o relativo.

O meu som no caso, é o nome que você deu ao seu evento de som, no caso pode ser qquer outro, ou só som, ou somdotiririca, qquer coisa, é só pra ele identificar ao que serefere no palco.

os loops infinitos pelo o que eu sei, não são tão infinitos assim, eles váo até 9999 somente se não me engano, mas é difícil alguem chegar a usar um loop por 9999 vezes, mesmo que seje muito pequeno ...

Agora esse ytipo de transição que você disse é possível, mas vou te dizer que nunca fiz, aliás eu nunca nem tinha usado essa idéia do som ir abaixando de volume até ficar mudo, achei até legal a idéia, o que você pode fazer no caso(olha onde entra a parte meusom) é fazer um novo som, tipo meusom você já fez, daí você faz meusom2, assim voce pode trabalhar com 2 sons ao mesmo tempo no palco, agora eu não sei se dá pra pegar o setVolume só de um som, ou se junta tudo uma coisa só, aí é só testando pra ver, daí você teria que fazer uma ação contraria da que abaixa o som, pra fazer outra subir, mas é meio complicadinho porque você terá que fazer bem mais código, e se você tiver 3 musicas no palco, você terá que fazer a mudança da 1 pra 2, e da 1 pra 3, da mesma forma que vai fazer a mudança da musica 2 pra musica 1, e da musica 2 pra 3, e assim por diante, pra cada uma será um código e no minimo 1 mc pra controlar, é trabalhoso, eu mesmo acho que não faria ...

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom... agora to começando a entender as coisas...Tb achei que seria bem trabalhoso fazer essa outra ideia...De qualquer forma consegui o que queria!!!!! :D Brigadão mesmo!!!Até a próxima meu velho!!!!!Abração, Tiago.

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.