📄 shotsounds.java
字号:
import java.io.*;
import javax.microedition.media.*;
public class ShotSounds implements PlayerListener
{
// number of fired shot and explosion sounds used
private static final int NUM_SHOT_SOUNDS = 3;
private static final int NUM_EXPLO_SOUNDS = 5;
// for playing sounds (fired shots and explosions)
private Player[] shotPlayers;
private Player[] exploPlayers;
private int currExploPlayer, currShotPlayer;
public ShotSounds()
{
// load fired shot sounds
System.out.println("Loading sounds");
shotPlayers = loadSounds("/sounds/laser.wav", NUM_SHOT_SOUNDS);
currShotPlayer = 0;
loadExploSounds("/sounds/explo");
} // end of ShotSounds()
// ------------------ loading ---------------------
private void loadExploSounds(String fn)
// load fn + ((0 to (NUM_EXPLO_SOUNDS-1) + ".wav" sounds
{
exploPlayers = new Player[NUM_EXPLO_SOUNDS];
currExploPlayer = 0;
for (int i=0; i < NUM_EXPLO_SOUNDS; i++)
exploPlayers[i] = loadSound(fn+i+".wav");
} // end of loadExploSounds()
private Player[] loadSounds(String fn, int num)
// load num copies of sound in fn
{
Player[] ps = new Player[num];
for (int i=0; i < num; i++)
ps[i] = loadSound(fn);
return ps;
} // end of loadSounds()
private Player loadSound(String fn)
// load fn sound
{
Player p = null;
try{
InputStream in = getClass().getResourceAsStream(fn);
p = Manager.createPlayer(in,"audio/x-wav");
p.realize();
p.prefetch(); // move player to PREFETECHED state
p.addPlayerListener(this);
}
catch(Exception ex)
{ System.out.println("Could not load sound in " + fn); }
return p;
} // end of loadSound()
// --------------- playing --------------------------
public void playExplosionSound()
{ playSound( exploPlayers[currExploPlayer] );
currExploPlayer = (currExploPlayer+1)%NUM_EXPLO_SOUNDS;
} // end of playExplosionSound()
public void playShotSound()
{ playSound( shotPlayers[currShotPlayer] );
currShotPlayer = (currShotPlayer+1)%NUM_SHOT_SOUNDS;
} // end of playShotSound()
private void playSound(Player p)
// Only start a player if it's in a PREFETECHED state.
{
if (p != null) {
if (p.getState() == Player.PREFETCHED) {
try{
p.setMediaTime(0); // rewind (a safety precaution)
p.start();
}
catch(Exception ex)
{ System.out.println("Could not play sound "); }
}
}
} // end of playSound()
// ----------------- finishing off --------------------
public void playerUpdate(Player p, String event, Object eventData)
// reset the player, ready for its next use
{
if (event == END_OF_MEDIA) {
try {
p.stop(); // back to PREFETECHED state
p.setMediaTime(0); // rewind to the beginning
}
catch(Exception ex) {}
}
} // end of playerUpdate()
public void closeSounds()
// tidy up by closing all the players down
{
for(int i=0; i < NUM_SHOT_SOUNDS; i++)
shotPlayers[i].close();
for(int i=0; i < NUM_EXPLO_SOUNDS; i++)
exploPlayers[i].close();
}
} // end of ShotSounds class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -