Czemu po dodaniu dźwięku wav, cała aplikacja się zacina?

Odpowiedz Nowy wątek
2018-01-29 20:02

Rejestracja: 4 lata temu

Ostatnio: 7 miesięcy temu

0

Plik waży 13MB, czy to z tego powodu, czy po prostu coś jest nie tak z kodem?
Dźwięk słychać w tle, ale cała aplikacja się zacina

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Queue;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.*;

public class GlowneOkno extends JFrame implements ActionListener{
    public JButton b1,b2,b3,b4;
    int prawa=300;int gora=250;int szerokosc=200;int wysokosc=100;

    public GlowneOkno(){
        super("ZABIJ JOM");
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setSize(800, 800);
        setVisible(true);
        setLocationRelativeTo(null);
        setResizable(false);
        setLayout(null);
        ///WYWOŁYWANIE PRZYCISKÓW
        b1=dodajPrzycisk("Nowa Gra");
        b1.addActionListener(new nowaGra());
        this.add(b1);

        b2=dodajPrzycisk("Opcje");
        b2.addActionListener(new Opcje());
        this.add(b2);

        b3=dodajPrzycisk("Twórcy");
        b3.addActionListener(new Director());
        this.add(b3);

        b4=dodajPrzycisk("Wyjście");
        b4.addActionListener(new Exit());
        this.add(b4);
        ///WYWOŁYWANIE MUZYKI W TLE, NIESTETY ZACZYNA ZACINAĆ, PLIK WAŻY 13MB
        File muzyka = new File("C:/Users/Krzysiek/Desktop/muzyka.wav");
        PlaySound(muzyka);
        ///IKONA 
        setIconImage(zwrocZdjecie("C:/Users/Krzysiek/Desktop/icon.png"));
        getContentPane().setBackground(Color.BLACK);
    }

    void PlaySound(File Sound)
    {
        try
        {
            Clip clip = AudioSystem.getClip();
            clip.open(AudioSystem.getAudioInputStream(Sound));
            clip.start();

            Thread.sleep(clip.getMicrosecondLength()/1000);
        }
        catch(Exception e)
        {

        }
    }

    private Image zwrocZdjecie(String string) {
        Toolkit zdjecie = Toolkit.getDefaultToolkit();
        Image img = zdjecie.getImage(string);
        return img;
    }

    private JButton dodajPrzycisk(String string) {
        // TODO Auto-generated method stub
        JButton a=new JButton(string);
        a.setToolTipText(string);
        a.setBounds(prawa,gora,szerokosc,wysokosc);
        gora+=125;
        a.setVisible(true);
        a.setFont(new Font("Raanana", Font.BOLD, 25));
        a.setBackground(Color.BLACK);
        a.setForeground(Color.white);
        return a;
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }

}

Pozostało 580 znaków

2018-01-29 21:14

Rejestracja: 3 lata temu

Ostatnio: 5 godzin temu

Lokalizacja: U krasnoludów - pod górą

Wywal Thread.sleep()


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.

Pozostało 580 znaków

2018-01-29 21:53

Rejestracja: 4 lata temu

Ostatnio: 7 miesięcy temu

0

Wiesz może jeszcze w jaki sposób użyć loop, żeby powtarzało się w nieskończoność?

Pozostało 580 znaków

2018-01-29 23:27
Moderator

Rejestracja: 11 lat temu

Ostatnio: 4 dni temu

0
clip.setLoopPoints(...);
clip.loop(...);

Szczegóły są tu: https://docs.oracle.com/javas[...]javax/sound/sampled/Clip.html


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2018-01-29 23:38
Moderator

Rejestracja: 11 lat temu

Ostatnio: 4 dni temu

0

Jeśli chcesz powtarzać całość utworu, to możesz użyć taki kod:

            URL soundFile = new URL("file:C:/Users/Krzysiek/Desktop/muzyka.wav");
            AudioClip clip = Applet.newAudioClip(soundFile);
            clip.loop();

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot