Implementieren von Sound in ein Java -SpielJava

Java-Forum
Anonymous
 Implementieren von Sound in ein Java -Spiel

Post by Anonymous »

Ich habe Buckys Java Game Development mit Slick für das Basis -Setup für das Spiel gefolgt und seitdem habe ich es mir selbst in die Hand genommen. Derzeit baue ich nur das Menü und es ist ziemlich fertiggestellt, außer dass ich es hinzufügen möchte. Ich bin eine Woche lang daran festgefahren, also ist es nicht so, als hätte ich keine Nachforschungen daran durchgeführt. Ich kann es einfach nicht zum Laufen bringen. Jetzt habe ich einen Code gefunden, der dies tut, was Sinn zu machen scheint, wie könnte ich dies implementieren oder ob Sie eine bessere Idee haben, wie man etwas Ton hinzufügt, geschätzt. < /P>

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

static String soundtrack = "res/doxx.wav";

public void sound(String path){

try{
AudioInputStream audio = AudioSystem.getAudioInputStream(Menu.class.getResource(path));
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
} catch (Exception e){
System.out.println("check "+path+"\n");
e.printStackTrace();
}
}
< /code>

Bearbeiten: Dieser Code wurde jetzt aus dem Programm herausgenommen, aber können Sie Antworten basierend darauf basierend < /p>

Das ist der Code, der sich auf das Hinzufügen von Sounds bisher bezieht. Hier ist die Gesamtheit meiner Menüklasse, die nicht riesig ist. Um ehrlich zu sein, müssen Sie es wahrscheinlich nicht im Detail betrachten. Derzeit basiert alle auf Grafiken und zwei Schaltflächen (Start und aufhören), die sich drehen. < /P>

package javagame;

import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

public class Menu extends BasicGameState {

double pi=3.14159265359;
float beanPosY = 330;
float beanPosX = 70;
double gravity = 0.01;
double angleStart=1.5*pi;
double angleQuit=0.5*pi;
int radius=120;
int centerX=300;
int centerY=160;
float startPosX = (float) (centerX + Math.sin(angleStart)*radius);
float startPosY = (float) (centerY + Math.cos(angleStart)*radius);
float quitPosX = (float) (centerX + Math.sin(angleQuit)*radius);
float quitPosY = (float) (centerY + Math.cos(angleQuit)*radius);
double force = 0;
public Menu(int state){
}

public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{
Sound music = new Sound();
music.playBackGround("res/doxx.wav");
}

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
Image background = new Image("res/background640x480.fw.png");
g.drawImage(background, 0, 0);

Image start = new Image("res/Start100x100.fw.png");
Image quit = new Image("res/quit100x100.fw.png");
start.draw(startPosX,startPosY);
quit.draw(quitPosX,quitPosY);

Image grass = new Image("res/grass640x150.fw.png");
g.drawImage(grass,0,340);

Image bean = new Image("res/bean.jpg");
bean.draw(beanPosX, beanPosY);
}

public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{
int posX = Mouse.getX();
int posY = Mouse.getY();
double constant=0.002*pi;

startPosX = (float) (centerX + Math.sin(angleStart)*radius);
startPosY = (float) (centerY + Math.cos(angleStart)*radius);
quitPosX = (float) (centerX + Math.sin(angleQuit)*radius);
quitPosY = (float) (centerY + Math.cos(angleQuit)*radius);

angleStart+=constant;
angleQuit+=constant;
if (angleStart>=2*pi){
angleStart-=2*pi;
}
if (angleQuit>=2*pi){
angleQuit-=2*pi;
}
//button interactions
menuInteraction(posX,posY,sbg);

if (beanPosY>=330){
force=1;
}
beanPosY-=force;
force-=gravity;
}

public int getID(){
return 0;
}

private void menuInteraction(int posX, int posY, StateBasedGame sbg){
//play button
float startXDist=posX-(startPosX+50);
float startYDist=(480-posY)-(startPosY+50);
float startDist=(float) Math.sqrt((startXDist*startXDist)+(startYDist*startYDist));
if(startDist

Bearbeiten: Der obige Code erstellt nun ein Objekt in der Methode 'init ()', die aufruft auf der "Ton" -Klasse und seiner Methode "Playbackground ()". Der Code für die Soundklasse ist in der folgenden Antwort aus Javanewb angegeben.
java.lang.NullPointerException
at com.sun.media.sound.StandardMidiFileReader.getSequence(Unknown Source)
at javax.sound.midi.MidiSystem.getSequence(Unknown Source)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at javagame.Sound.run(Sound.java:45)
at java.lang.Thread.run(Unknown Source)
< /code>

Der letzte Punkt, ich habe Dinge wie die LWJGL -Bibliotheken ausprobiert, ich kann sie nicht verstehen. Außerdem merke ich, wie sehr ich frage, da ich im Grunde nach jemandem frage . < /p>

PS. Es ist nicht so, als hätte ich nicht versucht, dies selbst zu tun.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post