Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.help > #1301

Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help

From Michael Adedeji <yankosmgt@gmail.com>
Newsgroups comp.lang.java.help
Subject Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help
Date 2011-11-07 09:27 -0800
Organization http://groups.google.com
Message-ID <5b8f8046-c136-45c5-bd2e-cb8aeb85e2d3@g1g2000vbd.googlegroups.com> (permalink)
References <bd906c49-fab3-47b0-ad80-82dbdcc3cf9f@g1g2000vbd.googlegroups.com> <nospam-B1E5E2.12014407112011@news.aioe.org>

Show all headers | View raw


On Nov 7, 5:01 pm, "John B. Matthews" <nos...@nospam.invalid> wrote:
> In article
> <bd906c49-fab3-47b0-ad80-82dbdcc3c...@g1g2000vbd.googlegroups.com>,
>  Michael Adedeji <yankos...@gmail.com> wrote:
>
> Consider playing the Clip on another thread, as shown below. Once the
> clip is initialized, it's easy to play repeatedly. A Swing Timer may be
> convenient, as it's action is called on the event dispatch thread, on
> which you have prudently constructed your GUI.
>
> As an aside, watch your indents and line wrap. Also, don't try to put
> the entire question in the title.
>
> import java.awt.*;
> import java.awt.event.ActionEvent;
> import java.awt.event.ActionListener;
> import java.util.Formatter;
> import javax.swing.*;
> import java.io.File;
> import javax.sound.sampled.*;
>
> public class AnimationSound extends JPanel {
>
>     private static final int BOX_WIDTH = 640;
>     private static final int BOX_HEIGHT = 480;
>     private static final int RATE = 30;
>     private File soundFile = new File("beep.wav");
>     private Clip clip;
>     private float ballRadius = 50;
>     private float ballX = 250 - ballRadius;
>     private float ballY = 250 - ballRadius;
>     private float ballSpeedX = 10;
>
>     public AnimationSound() {
>         this.setPreferredSize(new Dimension(BOX_WIDTH, BOX_HEIGHT));
>         // Prepare a Clip
>         try {
>             AudioInputStream audioInputStream =
>                 AudioSystem.getAudioInputStream(soundFile);
>             AudioFormat audioFormat = audioInputStream.getFormat();
>             DataLine.Info dataLineInfo =
>                 new DataLine.Info(Clip.class, audioFormat);
>             clip = (Clip) AudioSystem.getLine(dataLineInfo);
>             clip.open(audioInputStream);
>         } catch (Exception e) {
>             e.printStackTrace(System.err);
>         }
>         Timer timer = new Timer(1000 / RATE, new ActionListener() {
>
>             @Override
>             public void actionPerformed(ActionEvent e) {
>                 ballX += ballSpeedX;
>                 if (ballX - ballRadius < 0) {
>                     ballSpeedX = -ballSpeedX;
>                     ballX = ballRadius;
>                     playSound();
>                 } else if (ballX + ballRadius > BOX_WIDTH) {
>                     ballSpeedX = -ballSpeedX;
>                     ballX = BOX_WIDTH - ballRadius;
>                     playSound();
>                 }
>                 repaint();
>             }
>         });
>         timer.start();
>     }
>
>     // Play the sound in a separate thread.
>     private void playSound() {
>         Runnable soundPlayer = new Runnable() {
>
>             @Override
>             public void run() {
>                 try {
>                     clip.setMicrosecondPosition(0);
>                     clip.start();
>                 } catch (Exception e) {
>                     e.printStackTrace();
>                 }
>             }
>         };
>         new Thread(soundPlayer).start();
>     }
>
>     @Override
>     public void paintComponent(Graphics g) {
>         super.paintComponent(g); // Paint background
>         g.setColor(Color.BLACK);
>         g.fillRect(0, 0, BOX_WIDTH, BOX_HEIGHT);
>         g.setColor(Color.GREEN);
>         g.fillOval(
>             (int) (ballX - ballRadius),
>             (int) (ballY - ballRadius),
>             (int) (2 * ballRadius), (int) (2 * ballRadius));
>         g.setColor(Color.WHITE);
>         g.setFont(new Font("Dialog", Font.PLAIN, 12));
>         StringBuilder sb = new StringBuilder();
>         Formatter formatter = new Formatter(sb);
>         formatter.format(
>             "Ball @(%3.0f) Speed=(%2.0f)", ballX, ballSpeedX);
>         g.drawString(sb.toString(), 20, 30);
>     }
>
>     public static void main(String[] args) {
>         javax.swing.SwingUtilities.invokeLater(new Runnable() {
>
>             @Override
>             public void run() {
>                 JFrame frame = new JFrame("A Moving Ball");
>                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>                 frame.setContentPane(new AnimationSound());
>                 frame.pack();
>                 frame.setVisible(true);
>             }
>         });
>     }
>
> }
>
> --
> John B. Matthews
> trashgod at gmail dot com
> <http://sites.google.com/site/drjohnbmatthews>

@John B. Matthews....Thanks bro...it works now. :)

Back to comp.lang.java.help | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help Michael Adedeji <yankosmgt@gmail.com> - 2011-11-07 03:33 -0800
  Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help "John B. Matthews" <nospam@nospam.invalid> - 2011-11-07 12:01 -0500
    Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help Michael Adedeji <yankosmgt@gmail.com> - 2011-11-07 09:27 -0800
      Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help Michael Adedeji <yankosmgt@gmail.com> - 2011-11-08 05:17 -0800
        Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help "John B. Matthews" <nospam@nospam.invalid> - 2011-11-08 10:08 -0500
          Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help Michael Adedeji <yankosmgt@gmail.com> - 2011-11-09 03:48 -0800
  Re: Help : I want the sound to sound at the left and right of the screen..I also want it to continue forever....but the sound plays 4 times and stop...kindly help Roedy Green <see_website@mindprod.com.invalid> - 2011-11-08 06:49 -0800

csiph-web