ettern Skrevet 25. april 2007 Skrevet 25. april 2007 (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 25. april 2007 av ettern
starving Skrevet 27. april 2007 Skrevet 27. april 2007 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); } }
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå