15

Peindre la fenêtre et jouer un son en boucle

Téléchargez l'image de fond et le fichier audio.

Copiez bluewave.jpg dans un dossier appelé images et loop.au dans un dossier appelé sounds.

  1. Java/Canvas
    1. Canvas.java
    2. images
      1. bluewave.jpg
    3. sounds
      1. loop.au

Éditez Canvas.java.

  1. // <applet code="Canvas" width="500" height="300">
  2. // <param name="background" value="images/bluewave.jpg"/>
  3. // <param name="sound" value="sounds/loop.au"/>
  4. // </applet>
  5.  
  6. import java.applet.*;
  7. import java.awt.*;
  8. import java.awt.event.*;
  9.  
  10. public class Canvas extends Applet implements MouseListener {
  11.  
  12.     private Image image;
  13.  
  14.     private AudioClip sound;
  15.    
  16.     private Boolean playing = false;
  17.  
  18.     private int imageWidth, imageHeight;
  19.  
  20.     public void init() {
  21.         String p;
  22.  
  23.         p = getParameter("background");
  24.  
  25.         if (p != null) {
  26.             MediaTracker tracker = new MediaTracker(this);
  27.             image = getImage(getCodeBase(), p);
  28.             tracker.addImage(image, 0);
  29.             try {
  30.                 tracker.waitForID(0);
  31.             }
  32.             catch (InterruptedException e) {
  33.             }
  34.  
  35.             imageWidth = image.getWidth(this);
  36.             imageHeight = image.getHeight(this);
  37.         }
  38.  
  39.         p = getParameter("sound");
  40.  
  41.         if (p != null) {
  42.             sound = getAudioClip(getCodeBase(), p);
  43.             playing = true;
  44.         }
  45.        
  46.         addMouseListener(this);
  47.     }
  48.  
  49.     public void mouseClicked(MouseEvent e) {
  50.         if (playing)
  51.             stop();
  52.         else
  53.             start();
  54.         playing = !playing;
  55.     }
  56.  
  57.     public void mouseEntered(MouseEvent e) {}
  58.  
  59.     public void mouseExited(MouseEvent e) {}
  60.  
  61.     public void mousePressed(MouseEvent e) {}
  62.  
  63.     public void mouseReleased(MouseEvent e) {}
  64.  
  65.     public void paint(Graphics g) {
  66.  
  67.         int width = getSize().width;
  68.         int height = getSize().height;
  69.  
  70.         int y = 0;
  71.  
  72.         while (y < height) {
  73.             int x = 0;
  74.  
  75.             while (x < width) {
  76.                 g.drawImage(image, x, y, this);
  77.                 x += imageWidth;
  78.             }
  79.             y += imageHeight;
  80.         }
  81.     }
  82.  
  83.     public void start() {
  84.         if (sound != null)
  85.             sound.loop();
  86.     }
  87.  
  88.     public void stop() {
  89.         if (sound != null)
  90.             sound.stop();
  91.     }
  92. }
$ javac Canvas.java
$ appletviewer Canvas.java

L'image est répliquée pour couvrir toute la surface du fond de la fenêtre. Essayez de la redimensionner. Vous devriez aussi entendre un son en boucle. Cliquez dans la fenêtre pour mettre le lecteur en pause. Cliquez de nouveau pour reprendre la lecture.

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].