Gå til innhold

Får ikke SoundMap til å fungere


Anbefalte innlegg

Skrevet (endret)

Hei.

Har akkurat laget et ImageMap til et spill vi driver med i et prosjekt. Dette fungerer som bare det.

Nå er det SoundMap som står for tur, men det vil bare ikke fungere...

Trodde først det var omtrent samme kodingen som ImageMapet, men det var det tydeligvis ikke.

Noen her som har greie på det eller vet om en guide for hvordan det skal gjøres ?

 

For de som luerer hva jeg egentlig prater om, er dette mapet et sted som henter inn f.eks lyder eller bilder til en matrise når spillet starter, dette for å slippe å laste filene flere ganger, når spillet kjøres.

 

Håper på positive svar.

 

Mhv Anders

 

Her følger forresten koden for ImageMap jeg har laget, og det fungerer:

 

import java.util.HashMap;

import javax.swing.*;

import java.awt.*;

 

 

 

public class ImageMap {

private HashMap<String,Sound> soundMap;

private static ImageMap instance;

 

/**

* Legger nødvendige bilder i map.

*/

private ImageMap() {

soundMap = new HashMap<String,Sound>();

 

addImage("jibber.png");

addImage("jibberDown.png");

addImage("jibberUp1.png");

addImage("jibberUp2.png");

addImage("saks1.png");

addImage("saks2.png");

addImage("menu_background.png");

addImage("jumpCourse.png");

addImage("jibberUp2.png");

addImage("dead1.png");

addImage("dead2.png");

}

 

 

/**

* Henter singeltonen med bildene.

* @return instance med bildene

*/

public static ImageMap getInstance() {

if( instance == null ) {

instance = new ImageMap();

}

return instance;

}

 

/**

* Metode getImage

* Henter et bilde fra map

* @param String filnavn filen som skal hentes

* @return Bildet som hører til filnavn

*/

public Image getImage( String filnavn ) {

if (!imageMap.containsKey(filnavn)) {

addImage(filnavn);

}

return imageMap.get( filnavn );

}

 

 

/**

* Metode addImage

* Legg til et bilde i cachet

* @param basename basenavnet til bildet

*/

public void addImage(String soundname){

soundMap.put(soundname, loadImage(soundname));

}

 

/**

* Metode loadImage

* returnerer et Image fra fil

* @param filename Filnavnet til bildet

* @return Bildet som var lagret i filen

*/

private Image loadImage(String filename){

try {

 

return new ImageIcon( getClass().getResource( filename ) ).getImage();

} catch(Exception e) {

System.out.println("Could not find file: "+filename);

return null;

}

}

 

}

Endret av ettern
Videoannonse
Annonse
Skrevet

Det er akkurat samme fremgangsmåte når det gjelder lyd.

Her er et utdrag av klassen jeg har laget:

Klikk for å se/fjerne innholdet nedenfor

private Map<String, Clip> sounds;

 

URL url = Sound.class.getResource("sounds/" + filename);

Clip clip = null;

AudioInputStream audioInputStream = null;

try {

audioInputStream = AudioSystem.getAudioInputStream(url);

 

if (audioInputStream != null) {

AudioFormat format = audioInputStream .getFormat();

DataLine.Info info = new DataLine.Info( Clip.class, format);

try {

clip = (Clip) AudioSystem.getLine(info);

ClipCloser listener = new ClipCloser(clip);

clip.addLineListener(listener);

clip.open(audioInputStream);

//legger lyden i mappet.

sounds.put(ref, clip);

}

}

 

private class ClipCloser implements LineListener {

Clip m_clip;

 

public ClipCloser(Clip clip) {

m_clip = clip;

}

 

public void update(LineEvent event) {

if (event.getType().equals(LineEvent.Type.STOP)) {

Sound.this.decreaserunningSounds();

 

m_clip = (Clip)event.getLine();

m_clip.setFramePosition(1);

}

 

}

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...