Totaler Absturz beim mehrmaligen Abspielen von Sounds

N

NoobMitSauce

Gast
Ich bin verzweifelt.
Ursprüngliche Idee: ein kleines moorhuhnartiges spiel, bei dem es mit der Maus irgendetwas abzuschießen gilt.
Da ich noch nie mit Sounds gearbeitet habe und auch sonst noch ziemlich unwissend bin habe ich verschiedenste Methoden ausprobiert um bei Mausklick einen kleinen Sound abzuspielen. Immer wieder trat folgendes Problem auf: Beim ersten Klick funktioniert alles wunderbar, beim zweiten vielleicht auch noch, aber dann - friert der Bildschirm ein, keine wie auch immer geartete Reaktion des PCs mehr. Übrig bleibt nur noch das ungeliebte Ausschalten des PCs.
Inzwischen habe ich, der Überlegung folgend, dass andere das doch auch hinkriegen, einfach die Klasse SoundLib aus Quaxli's Tutorial verwendet :oops: doch zu meinem Ärger musste ich feststellen, dass das Problem noch immer auftrat...
(Zum Code: ich mache das Simpelste, ich verwende SoundLib gemäß den Angaben des Tutorials und rufe im MouseListener die Methode zum Abspielen des Sounds auf.)
Hat jemand eine Ahnung, woran das liegt?

Danke im Voraus
NoobMitSauce
 

Steev

Bekanntes Mitglied
Hast du das ganze schon mal mit einem anderen Sound probiert?
Du solltest ebenfalls aufpassen, dass du nicht mehrfach ein-und-denselben Sound initialisierst und von der Platte streamst, da du sonst zu viele Ressourcen verbrauchst.
Dann wüsste ich noch gerne welche JDK/JRE und welches OS du verwendest, da man so schon mal das Problem etwas eingrenzen kann. Wenn es dir nichts ausmacht, dann poste doch einfach den Quellcode in dem du den Sound abspielst (auch das drumherum, manchmal liegt das Problem auch wo anders).

Gruß
Steev
 
N

NoobMitSauce

Gast
JRE 6
JDK 1.6.0_12 (steht so auf dem Ordner)
zum Operating System: Da bin ich mir ehrlich gesagt nicht sicher, was als Antwort erwartet wird.. :bahnhof: Windows XP?

Java:
import java.awt.*;
import java.awt.event.*;
import javax.sound.sampled.*;
import java.io.*;
import java.util.Random;


public class Wundermoorhuhn extends Frame implements Runnable{
  // Anfang Attribute
  Thread th = new Thread(this);
  private Image dbImage;
  private Graphics dbg;
  Image CursorImage;
  Cursor cursor;
  Wunder[] wunder = new Wunder[10];
  int[][] collision = new int[1000][700];
  final int LINKS = 0;
  final int RECHTS = 1;
  final int OBEN = 2;
  final int UNTEN = 3;
  Wolke[] wolke = new Wolke[3];
  Image Sonne;
  Doktor[] doktor = new Doktor[3];
  Random random = new Random();
  SoundLib slib;



  // Ende Attribute

  public Wundermoorhuhn(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 1000;
    int frameHeight = 700;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    // Anfang Komponenten
    CursorImage = Toolkit.getDefaultToolkit().getImage("Fadenkreuz.gif");
    cursor = Toolkit.getDefaultToolkit().createCustomCursor(CursorImage,new Point(15,15),"Fadenkreuz");
    setCursor(cursor);
    Sonne = Toolkit.getDefaultToolkit().getImage("Sonne.png");

    for (int i = 0; i < 1000; i++)
    {
      for (int j = 0; j < 700; j++)
      {
        collision[i][j] = -1;
      }
    }

    for (int i = 0; i < wunder.length; i++)
    {
      wunder[i] = null;
    }
    for (int i = 0; i < doktor.length; i++)
    {
      doktor[i] = null;
    }
    for (int i = 0; i < wolke.length; i++)
    {
      wolke[i] = new Wolke();
    }

    this.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mouseClicked(java.awt.event.MouseEvent e) {
        //hier wird die Maus abgefragt
        getCollision();
        if(collision[z1][z2]> -1)
        {
          if(collision[z1][z2]> 9)
          {
            doktor[collision[z1][z2]-10].setRichtung(UNTEN);
          }
          else
          {
            wunder[collision[z1][z2]] = null;
            if(random.nextBoolean())
            {
              wunder[collision[z1][z2]] = new Wunder(-210,random.nextInt(360),RECHTS,random.nextInt(4)+6);
            }
            else
            {
              wunder[collision[z1][z2]] = new Wunder(1010,random.nextInt(360),LINKS,random.nextInt(4)+6);
            }

          }
        }
        slib.playSound("ding");
      }
    });
    
    slib = new SoundLib();
    slib.loadSound("ding","ding.wav");

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
    initiateLevel(1);
  }
  
  // Anfang Methoden ===========================================

  public void startAnimation()
  {
    th.start();
  }

  public void run()
  {
    while(true)
    {
      update(getGraphics());
      try
      {
        Thread.sleep(25);//Verzögerung zwischen den Bildern
      }catch (InterruptedException e)
      {
        //nichts
      }
    }
  }
  
  public void update(Graphics g)
  {
    // Initialisierung des DoubleBuffers
    if (dbImage == null)
    {
      dbImage = createImage (this.getSize().width, this.getSize().height);
      dbg = dbImage.getGraphics ();
    }
    // Bildschirm im Hintergrund löschen
    dbg.setColor (getBackground ());
    dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

    // Auf gelöschten Hintergrund Vordergrund zeichnen
    dbg.setColor (getForeground());
    
    // BILD ERSTELLEN =================================
    //Grüner Boden
    dbg.setColor(new Color(20,185,20,255));
    dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
    //Blauer Himmel
    dbg.setColor(new Color(65,65,255,255));
    dbg.fillRect (0, 0, this.getSize().width, this.getSize().height*2/3);
    //Gelbe Sonne
    dbg.drawImage(Sonne,780,0,this);
    //Wolken
    for (int i = 0; i < wolke.length; i++)
    {
      wolke[i].zeichnen(dbg);
    }
    //Doktoren
    for (int i = 0; i < doktor.length; i++)
    {
      if(doktor[i] != null)
      {
        doktor[i].zeichnen(dbg);
      }
    }
    //Wundervögel
    for (int i = 0; i < wunder.length; i++)
    {
      if(wunder[i] != null)
      {
        wunder[i].zeichnen(dbg);
      }
    }
    //===============================================
    
    
    g.drawImage (dbImage, 0, 0, this);
  }

  public void paint(Graphics g)
  {
    //nichts
  }
  
  public void getCollision()
  {
    for (int i = 0; i < 1000; i++)
    {
      for (int j = 0; j < 700; j++)
      {
        collision[i][j] = -1;
      }
    }
    for (int i = 0; i < doktor.length; i++)
    {
      if(doktor[i] != null)
      {
        doktor[i].getCollision(collision,i,this);
      }
    }
    for (int i = 0; i < wunder.length; i++)
    {
      if(wunder[i] != null)
      {
        wunder[i].getCollision(collision,i,this);
      }
    }
  }
  
  public void initiateLevel(int level)
  {
    System.out.println("initiateLevel wird aufgerufen");
    for (int i = 0; i < wunder.length; i++)
    {
      wunder[i] = null;
    }
    switch (level) {
      case 1 :
        wunder[0] = new Wunder(50,50,LINKS,2);
        wunder[1] = new Wunder(400,300,RECHTS,2);
        doktor[0] = new Doktor(100);
        break;
      case 2 :
        wunder[0] = new Wunder(400,50,LINKS,2);
        wunder[1] = new Wunder(50,400,RECHTS,2);
        break;
      default:
        System.out.println("Fehler beim initiieren des Levels");
    }
  }
  // Ende Methoden ===========================================

  public static void main(String[] args) {
    Wundermoorhuhn wundermoorhuhn = new Wundermoorhuhn("Wundermoorhuhn");
    wundermoorhuhn.startAnimation();
  }
}

Das ganze Kollisionszeugs bitte ignorieren, ich weiß, dass das gelinde gesagt verbesserungswürdig ist, es geht mir um dieses Sound-Problem.

Dankeschön
NoobMitSauce
 

Steev

Bekanntes Mitglied
Zu dem Sound:
Du Spielst den Sound ja im Grunde genommen nur über die SoundLib ab. Ich vermute hier liegt das Problem primär an dem Sound selbst. wav kann ja ziemlich groß werden, wie groß ist die Datei ungefähr?
Hast du schon einmal probiert das Programm unter einer früheren JDK auszuführen. Ich hatte kürzlich mit dem Sound ein ähnliches Problem, wo ich dann feststellen musste, das zwischen den JDKs etwas im Hintergrund geändert wurde.

Zum Spiel:
Ich würde für alle Objekte, die angeklickt werden können ein Objekt erstellt und hier eine Instanz der Klasse Rectangle als Attribut verweisen. Damit kannst du einfach über den Standard eine Kollisionsabfrage durchführen.
Du kannst dir ja mal folgenden Post ansehen...

http://www.java-forum.org/spiele-mu.../88412-performancetest-kleines-spielchen.html

In einem der letzten Beiträge findest du auch den damals aktuellen Quellcode.

Gruß
Steev
 
N

NoobMitSauce

Gast
Die Datei ist 78.9 KB groß. Ich hatte es auch schon mal mit .au probiert, aber die ist ja noch größer.. Welches Format wäre denn empfehlenswert?
Das mit der älteren jdk werde ich mal probieren.

Dankeschön
NoobMitSauce
 
N

NoobMitSauce

Gast
Nicht zu fassen... mit der älteren Version macht er keine Probleme mehr... schon irgendwie absurd...
... ... Danke !!!!!
Tut mir übrigens Leid wegen des Doppelposts, beim nächsten Problem, das ich habe, melde ich mich hier an.

Vielen, vielen Dank,
NoobMitSauce
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Android App Absturz beim Starten Spiele- und Multimedia-Programmierung 41
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
J Perfomance Probleme beim eigenen Editor Spiele- und Multimedia-Programmierung 1
K Probleme beim kompilieren von javakara Spiele- und Multimedia-Programmierung 10
S [LWJGL] schwarzer Bildschrim beim rendern von .obj Model Spiele- und Multimedia-Programmierung 2
L Probleme beim kompilieren von javakara Spiele- und Multimedia-Programmierung 3
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
M Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion) Spiele- und Multimedia-Programmierung 5
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
C Java3D Lichtquelle beim Beobachter Spiele- und Multimedia-Programmierung 2
W CannotRealizeException (jmf) beim abspielen eines liedes Spiele- und Multimedia-Programmierung 3
aze Problem beim Laden von Obj File Spiele- und Multimedia-Programmierung 3
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
L Fehlersuche beim Weichzeichner-Algorithmus Spiele- und Multimedia-Programmierung 9
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
S Probleme mit Thread beim Streaming Spiele- und Multimedia-Programmierung 1
B Problem beim Programmieren von 4Gewinnt Spiele- und Multimedia-Programmierung 5
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
D Fehler beim Stein Scher papier Spiel Spiele- und Multimedia-Programmierung 3
G Überlagern von Strings beim zeichnen verhindern Spiele- und Multimedia-Programmierung 3
G Weiße, vertikale Streifen beim Scrollen auf der Map Spiele- und Multimedia-Programmierung 4
D Probleme beim Download von GIF-Bildern Spiele- und Multimedia-Programmierung 4
C KI beim Computergegner? Spiele- und Multimedia-Programmierung 2
G Problem beim Zeichnen von LineArrays Spiele- und Multimedia-Programmierung 9
C Problem beim picken Spiele- und Multimedia-Programmierung 10
B Problem beim Programmieren Von Mühle Spiele- und Multimedia-Programmierung 6
T Exception beim starten von Java3d Apps Spiele- und Multimedia-Programmierung 2
B problem beim Memory Logik Spiele- und Multimedia-Programmierung 13
J Problem beim Instaliren Spiele- und Multimedia-Programmierung 8
W Probleme beim entfernen von Childs im HauptSceneGraph Spiele- und Multimedia-Programmierung 8
S Sudoku Solver funktioniert beim 2. Aufruf nicht mehr Spiele- und Multimedia-Programmierung 11
B Probleme beim zeichnen Spiele- und Multimedia-Programmierung 15
N Rundenstrategiespiel - Problem beim Drehen eines Bildes Spiele- und Multimedia-Programmierung 18
C Graphische Benutzerschnittstelle, Problem beim Zeichnen Spiele- und Multimedia-Programmierung 4
0 Crashes beim Abspielen von Sounds unter Win98 Spiele- und Multimedia-Programmierung 12
G Probleme beim installieren java 3d linux Spiele- und Multimedia-Programmierung 4
T Java2D Spiel, beim Hinzufügen eines Bildes ruckelt das ganze Spiele- und Multimedia-Programmierung 3
A Bildfehler beim schnellen neuzeichnen Spiele- und Multimedia-Programmierung 2
D Pfeiltasten beim KeyListener Spiele- und Multimedia-Programmierung 1
I Beim Picking werden alle Behaviors angesprochen Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben