Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.help > #1302
| 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-08 05:17 -0800 |
| Organization | http://groups.google.com |
| Message-ID | <d0ec0e85-ad00-4fe5-9a86-5511fbae10a5@w7g2000yqc.googlegroups.com> (permalink) |
| References | <bd906c49-fab3-47b0-ad80-82dbdcc3cf9f@g1g2000vbd.googlegroups.com> <nospam-B1E5E2.12014407112011@news.aioe.org> <5b8f8046-c136-45c5-bd2e-cb8aeb85e2d3@g1g2000vbd.googlegroups.com> |
On Nov 7, 5:27 pm, Michael Adedeji <yankos...@gmail.com> wrote:
> 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. :)
What if I want the ball colours to change and also I want the size and
the speed to be like a menu?
Back to comp.lang.java.help | Previous | Next — Previous in thread | Next in thread | Find similar
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