Sounds - só toca uma vez

2 respostas
M

Ola… fiz algumas mudanças no código, mas ainda não funciona… alguém pode
dar uma luz ?
A classe abaixo é uma Thread… quando o método fatalitySound() ou hitSound()
for chamado, quero que reproduza o audio … o problema é que ele faz isso
apenas 1 vez… reproduz o audio uma vez e depois não mais… como se o
arquivo após reproduzido fosse fechado… alguém sabe o que é isso ?

import javax.sound.sampled.*;
import java.io.*;

public class Sons extends Thread{

    private Object ob;
    private String local2;
    private String local;

    private AudioInputStream fatality = null,hit=null;
    private Clip fatal,hits;

    private boolean canFatal=false,canHit=false;

    public Sons(){
    try{
    ob=this.getClass().getResource(".");
    local2=ob+"";
    local=local2.substring(6,local2.length());
    carregaSons();       }
    catch(Exception e){}         }


    public void carregaSons() throws Exception{
    try {
        fatality = AudioSystem.getAudioInputStream(new
File(local+"Sonsfatality.wav"));
        hit= AudioSystem.getAudioInputStream(new
File(local+"Sonshit.wav"));

        fatal = (Clip) AudioSystem.getLine(new
DataLine.Info(Clip.class,fatality.getFormat()));
        hits= (Clip) AudioSystem.getLine(new
DataLine.Info(Clip.class,hit.getFormat()));

        hits.open(hit);
        fatal.open(fatality);

        } catch (Exception excecao) {
            excecao.printStackTrace(); }
    }


    public void fatalitySound() throws Exception{
    canFatal=true; }

    public void hitSound() throws Exception{
    canHit=true; }

  public void run(){
   try{
   while(true){

    if(canHit){
    hits.start();
    canHit=false;}

    if(canFatal){
    fatal.start();
    canFatal=false; }

   }} catch(Exception ex){}

}     }

2 Respostas

dukejeffrie

Cara… eu sei que tem um pacote chamado JavaSound, com tutoriais e tudo, que vc pode dar uma olhada.

Mas a princípio, streams são read-once. O que vc pode fazer é chamar o método reset() no seu AudioInputStream quando terminar de tocar o som.

Digo pra fazer isso quando terminar pq se fizer no começo, vc vai ter que trabalhar com um possível atraso decorrente do reposicionamento do stream.

boa sorte!
Tiago.

M

Hmmm vou testar o reset(), obrigado!
se quiser baixar a tosquera que estou fazendo hehe http://gdicas.ath.cx/Bombastic.zip… tipo um mortal kombat

O audiosound funciona só em applets… não consegui fazer funcionar normalmente

Criado 4 de dezembro de 2002
Ultima resposta 9 de dez. de 2002
Respostas 2
Participantes 2