공이 무한 루프에서 위아래로 움직입니다. 소리는 각 동작마다 재생됩니다. 그러나 매 5-6 개의 동작마다 재생되고 있습니다. 왜 그런 일이 일어나는거야? 사운드 지속 시간은 1 초 미만입니다. 코드에서 루프 반복마다 3 초 동안 절전 모드가됩니다. 그러나 수면 시간을 6 초로 변경하면 필요한 효과를 얻을 수 있습니다.자바 애니메이션 사운드가 제대로 재생되지 않습니다.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import sun.audio.*;
import java.io.*;
public class dabble {
private boolean z=false;
private int x=10;
private int y=10;
private JFrame frame;
private JLabel label;
private mypanel panel;
private JButton b1;
private JButton b2;
public static void main (String[] args) throws Exception
{
dabble dab = new dabble();
dab.start();
}
void start()
{
frame = new JFrame();
label = new JLabel();
panel = new mypanel();
b1= new JButton("Start");
b2= new JButton("Stop");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b1.addActionListener(new al1());
b2.addActionListener(new al2());
frame.getContentPane().add(BorderLayout.NORTH,b1);
frame.getContentPane().add(BorderLayout.SOUTH,b2);
frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.EAST,label);
frame.setSize(600,600);
frame.setVisible(true);
}
class al1 implements ActionListener{
public void actionPerformed(ActionEvent event){
if (z==false)
{
class myrun implements Runnable{
public void run(){
z=true;
while(z==true)
{
y=510-y;
panel.repaint();
try
{
InputStream in=new FileInputStream("hit.wav");
AudioStream as=new AudioStream(in);
AudioPlayer.player.start(as);
Thread.sleep(3000);
}
catch(Exception Ex){}
}
}
}
Runnable myjob = new myrun();
Thread mythread = new Thread(myjob);
mythread.start();
}
}
}
class al2 implements ActionListener{
public void actionPerformed(ActionEvent event){
z=false;
}
}
class mypanel extends JPanel {
public void paintComponent (Graphics g){
g.setColor(Color.white);
g.fillRect(0,0,this.getWidth(),this.getHeight());
int red = (int) (Math.random()*255);
int green = (int) (Math.random()*255);
int blue = (int) (Math.random()*255);
Color c1 = new Color(red,green,blue);
g.setColor(c1);
g.fillOval(x,y,20,20);
}
}
}
코드를 실행하려고했지만 javax.sound.sampled SourceDataLine을 사용하여 동일한 오류가 발생했습니다. 생성자로 코드를 이동하는 것은별로 도움이되지 못했습니다. 경우에 따라 사운드가 늦게 들어오는 경우가 있었지만, 30 분의 1 범위로 내려갔습니다. 아주 궁금해서. –