SoundClip.java
上传用户:haoxsx
上传日期:2022-03-22
资源大小:20k
文件大小:2k
源码类别:

Applet

开发平台:

Java

  1. package asteroids;
  2. import javax.sound.sampled.*;
  3. import java.net.*;
  4. import java.io.*;
  5. public class SoundClip {
  6.          private AudioInputStream sample;
  7.          
  8.          private Clip clip;
  9.          public Clip getClip(){
  10.           return clip;
  11.           }
  12.          
  13.          private boolean looping = false;
  14.          public void setLooping(boolean _looping){
  15.           looping=_looping;
  16.           }
  17.          public boolean getLooping(){
  18.           return looping;
  19.          }
  20.          
  21.          private int repeat = 0;
  22.          public void setRepeat(int _repeat){
  23.           repeat=_repeat;
  24.          }
  25.          public int getRepeat(){
  26.           return repeat;
  27.          }
  28.          
  29.          private String filename="";
  30.          public void setFilename(String _filename){
  31.          filename=_filename;
  32.          }
  33.          public String getFilename(){
  34.           return filename;
  35.          }
  36.          public boolean isLoaded(){
  37.           return(boolean)(sample !=null);
  38.          }
  39.          
  40.          public SoundClip(){
  41.           try{
  42.           clip=AudioSystem.getClip();
  43.           }catch(LineUnavailableException e){}
  44.          }
  45.          public SoundClip(String audiofile){
  46.           this();
  47.           load(audiofile);
  48.          }
  49.          private URL getURL(String filename){
  50.           URL url = null;
  51.           try{
  52.           url = this.getClass().getResource(filename);
  53.           }catch(Exception e){}
  54.           return url;
  55.          }
  56.          public boolean load(String audiofile){
  57.           try{
  58.                   setFilename(audiofile);
  59.                   sample = AudioSystem.getAudioInputStream(getURL(filename));
  60.                   clip.open(sample);
  61.                   return true;
  62.            }catch(IOException e){
  63.            return false;
  64.            }catch(UnsupportedAudioFileException e){
  65.            return false;
  66.            }catch(LineUnavailableException e){
  67.            return false;
  68.            }
  69.           
  70.            
  71.          }
  72.          public void play(){
  73.           if(!isLoaded())return;
  74.           clip.setFramePosition(0);
  75.           if(looping)
  76.           clip.loop(clip.LOOP_CONTINUOUSLY);
  77.           else
  78.           clip.loop(repeat);
  79.          }
  80.          public void stop(){
  81.           clip.stop();
  82.          }
  83.          
  84. }