⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.java

📁 用java实现的类似于连连看游戏的单词连连看
💻 JAVA
字号:
import javax.sound.midi.*;
import java.io.*;
import java.net.*;
import java.applet.*;

public class Music implements MetaEventListener, Runnable 
{     AudioClip clip=null;
     
     //String midiFile = "(int)(Math.random()*6+1)"+".mid";
     String midiFile;
     Sequence sequence = null;
     Sequencer sequencer;
     boolean isPlaying = false;
     volatile Thread thread;

    public Music() 
    {
      int index=(int)(Math.random()*14+1);
      switch(index)
      {
      	case 1:
      	midiFile="Music/a1.mid";
      	break;
      	case 2:
      	midiFile="Music/a2.mid";
      	break;
      	case 3:
      	midiFile="Music/a3.mid";
      	break;
      	case 4:
      	midiFile="Music/a4.mid";
      	break;
      	case 5:
      	midiFile="Music/a5.mid";
      	break;
      	case 6:
      	midiFile="Music/a6.mid";
      	break;
      	case 7:
      	midiFile="Music/a7.mid";
      	break;
      	case 8:
      	midiFile="Music/a8.mid";
      	break;
      	case 9:
      	midiFile="Music/a9.mid";
      	break;
      	case 10:
      	midiFile="Music/a10.mid";
      	break;
      	case 11:
      	midiFile="Music/a11.mid";
      	break;
      	case 12:
      	midiFile="Music/a12.mid";
      	break;
      	case 13:
      	midiFile="Music/a13.mid";
      	break;
      	case 14:
      	midiFile="Music/a14.mid";
      	break;
      }
      try 
      {
        loadMidi(midiFile);
      }
      catch (InvalidMidiDataException ex) {
      }
      catch (IOException ex) {
      }
    }

 
  public void loadMidi(String filename) throws IOException,
      InvalidMidiDataException 
  {
    URLClassLoader urlLoader = (URLClassLoader)this.getClass().getClassLoader();
    URL url = urlLoader.findResource(filename);
    sequence = MidiSystem.getSequence(url);
  }
  public void playNew()
  {  
     //File file=new File(".\\Music","a9.mid");
     File file=new File(midiFile);
      try{
            clip=java.applet.Applet.newAudioClip(file.toURL());
          }
      catch(Exception eee)      {}
     clip.play();
  }
  public void stopMusic()
  {  if(clip!=null)
      clip.stop();
  }

  public void play() 
 {
    if (isPlaying) { //如果已经在播放,返回
      return;
    }

    try {
      // Create a sequencer for the sequence
      sequencer = MidiSystem.getSequencer();
      sequencer.open();
      sequencer.setSequence(sequence);

      sequencer.addMetaEventListener(this);
    }
    catch (InvalidMidiDataException ex) {
    }
    catch (MidiUnavailableException e) {
    }

    // Start playing
    thread = new Thread(this);
    thread.start();
  }

  public void stop() 
 {
    if (isPlaying) {
      	
      sequencer.stop();
      sequencer.stopRecording();
      isPlaying = false;
    }
    if (thread != null) {
      thread = null;
    }
  }

  public void run() {
    Thread currentThread = Thread.currentThread();
    while (currentThread == thread && !isPlaying) {
      sequencer.start();
      isPlaying = true;
      try {
        thread.sleep(1000l);
      }
      catch (InterruptedException ex) {
      }
    }
  }

  public void meta(MetaMessage event) {
    if (event.getType() == 47) {
      System.out.println("Sequencer is done playing.");
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -