`
seawavenews
  • 浏览: 231532 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Applet Sound

阅读更多

/* From http://java.sun.com/docs/books/tutorial/index.html */
/*
<html>
<body>

    <applet code=SoundExample.class width=450 height=50>
    </applet>

</body>
</html>
*/
/*
 * 1.1 version.


import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;

public class SoundExample extends Applet implements ActionListener {
  SoundList soundList;

  String onceFile = "bark.au";

  String loopFile = "train.au";

  AudioClip onceClip;

  AudioClip loopClip;

  Button playOnce;

  Button startLoop;

  Button stopLoop;

  Button reload;

  boolean looping = false;

  public void init() {
    playOnce = new Button("Bark!");
    playOnce.addActionListener(this);
    add(playOnce);

    startLoop = new Button("Start sound loop");
    stopLoop = new Button("Stop sound loop");
    stopLoop.setEnabled(false);
    startLoop.addActionListener(this);
    add(startLoop);
    stopLoop.addActionListener(this);
    add(stopLoop);

    reload = new Button("Reload sounds");
    reload.addActionListener(this);
    add(reload);

    startLoadingSounds();
  }

  void startLoadingSounds() {
    //Start asynchronous sound loading.
    soundList = new SoundList(this, getCodeBase());
    soundList.startLoading(loopFile);
    soundList.startLoading(onceFile);
  }

  public void stop() {
    onceClip.stop(); //Cut short the one-time sound.
    if (looping) {
      loopClip.stop(); //Stop the sound loop.
    }
  }

  public void start() {
    if (looping) {
      loopClip.loop(); //Restart the sound loop.
    }
  }

  public void actionPerformed(ActionEvent event) {
    //PLAY BUTTON
    Object source = event.getSource();
    if (source == playOnce) {
      if (onceClip == null) {
        //Try to get the AudioClip.
        onceClip = soundList.getClip(onceFile);
      }

      if (onceClip != null) { //If the sound is loaded:
        onceClip.play(); //Play it once.
        showStatus("Playing sound " + onceFile + ".");
      } else {
        showStatus("Sound " + onceFile + " not loaded yet.");
      }
      return;
    }

    //START LOOP BUTTON
    if (source == startLoop) {
      if (loopClip == null) {
        //Try to get the AudioClip.
        loopClip = soundList.getClip(loopFile);
      }

      if (loopClip != null) { //If the sound is loaded:
        looping = true;
        loopClip.loop(); //Start the sound loop.
        stopLoop.setEnabled(true); //Enable stop button.
        startLoop.setEnabled(false); //Disable start button.
        showStatus("Playing sound " + loopFile + " continuously.");
      } else {
        showStatus("Sound " + loopFile + " not loaded yet.");
      }
      return;
    }

    //STOP LOOP BUTTON
    if (source == stopLoop) {
      if (looping) {
        looping = false;
        loopClip.stop(); //Stop the sound loop.
        startLoop.setEnabled(true); //Enable start button.
        stopLoop.setEnabled(false); //Disable stop button.
      }
      showStatus("Stopped playing sound " + loopFile + ".");
      return;
    }

    //RELOAD BUTTON
    if (source == reload) {
      if (looping) { //Stop the sound loop.
        looping = false;
        loopClip.stop();
        startLoop.setEnabled(true); //Enable start button.
        stopLoop.setEnabled(false); //Disable stop button.
      }
      loopClip = null; //Reset AudioClip to null.
      onceClip = null; //Reset AudioClip to null.
      startLoadingSounds();
      showStatus("Reloading all sounds.");
      return;
    }
  }
}
/*
 * Code is the same in both 1.0 and 1.1.
 */

//Loads and holds a bunch of audio files whose locations are specified
//relative to a fixed base URL.

class SoundList extends java.util.Hashtable {
  Applet applet;

  URL baseURL;

  public SoundList(Applet applet, URL baseURL) {
    super(5); //Initialize Hashtable with capacity of 5 entries.
    this.applet = applet;
    this.baseURL = baseURL;
  }

  public void startLoading(String relativeURL) {
    new SoundLoader(applet, this, baseURL, relativeURL);
  }

  public AudioClip getClip(String relativeURL) {
    return (AudioClip) get(relativeURL);
  }

  public void putClip(AudioClip clip, String relativeURL) {
    put(relativeURL, clip);
  }
}
/*
 * Code is the same in both 1.0 and 1.1.
 */

class SoundLoader extends Thread {
  Applet applet;

  SoundList soundList;

  URL baseURL;

  String relativeURL;

  public SoundLoader(Applet applet, SoundList soundList, URL baseURL,
      String relativeURL) {
    this.applet = applet;
    this.soundList = soundList;
    this.baseURL = baseURL;
    this.relativeURL = relativeURL;
    setPriority(MIN_PRIORITY);
    start();
  }

  public void run() {
    AudioClip audioClip = applet.getAudioClip(baseURL, relativeURL);

    //AudioClips load too fast for me!
    //Simulate slow loading by adding a delay of up to 10 seconds.
    try {
      sleep((int) (Math.random() * 10000));
    } catch (InterruptedException e) {
    }

    soundList.putClip(audioClip, relativeURL);
  }
}

 */
分享到:
评论

相关推荐

    Java Applet

    Java Applet是Java技术在早期Web开发中的一种应用方式,它允许开发者创建可以在浏览器中运行的小型应用程序。Applet的概念源自于90年代中期,当时Web页面主要由静态HTML构成,而Java Applet的出现为网页带来了交互性...

    java applet 电子相册

    5. **音频处理**:Java的`javax.sound.sampled`包提供了音频输入、输出和混音的功能。在本项目中,Applet可能使用这个包来加载并播放背景音乐“童话”。 6. **事件监听**:为了实现用户控制(如暂停、播放、上一张...

    applet录音上传

    总的来说,"applet录音上传"涉及了Java Applet编程、Java Sound API、HTTP通信、文件操作以及可能的音频编码和解码等技术。这个任务展示了Java在构建客户端-服务器应用中的灵活性和强大功能,特别是在处理多媒体数据...

    Applet钢琴模拟程序

    2. **音频处理**:为了播放音符,程序需要与Java Sound API交互。这个API允许开发者读取、写入和播放音频文件,以及生成合成声音。在这个钢琴模拟程序中,当用户点击一个键时,对应的音符会被合成并播放出来。 3. *...

    Applet 实现 简单钢琴

    4. **音频播放**:Java的`javax.sound.sampled`包提供了音频输入和输出的功能,用于播放钢琴音符。开发者可能需要加载音频样本或者实时生成音符的声音。 5. **用户交互**:Applet需要能够识别用户的键盘输入,以...

    基于Java的Applet钢琴模拟程序源码.zip

    Java提供了一套完整的音频处理API,包括`javax.sound.sampled`包,它允许开发者录制、播放、混合和处理音频数据。在钢琴模拟程序中,开发者可能利用了这些API来实现音符的播放。例如,通过`Clip`类加载和播放音轨,...

    java applet

    - **多媒体支持**:Java提供`javax.sound`包来处理音频,像`music.wav`这样的文件可以通过Java程序进行播放。 由于Java Applet的安全性和兼容性问题,现在很少在新项目中使用。不过,理解其工作原理和历史背景对于...

    JAVA/Applet 多功能音乐播放器

    对于音乐播放,开发者可能使用Java Sound API,它提供了音频输入、输出和处理的功能。 在设计音乐播放器的GUI时,开发者需要考虑用户体验,合理布局各个控件,确保操作直观易懂。例如,播放按钮通常用播放图标表示...

    Java_applet_音频播放器

    3. **SoundApplet**:这是主文件,使用AppletSoundList来管理音频文件,并通过调用AudioClip的相关方法来播放、停止或循环音频。 在Java中,支持的主要音频文件类型有: - **AU/SND**:通用于Solaris和下一代机器...

    java-applet_timeCount.rar_applet_java applet ti_java 倒计时

    Java Applet是一个嵌入在网页中的小程序,由Java语言编写,可以提供丰富的交互性功能,如本例中的倒计时有声定时器。这个特定的Java Applet项目名为"TimeCount",它不仅实现了基本的倒计时功能,还特别加入了声音...

    JAVA 播放器Applet

    4. **多媒体处理**:Java提供了`javax.sound.sampled`和`javax.media`包来处理音频和视频。对于音频,我们需要了解如何打开、读取和播放音频文件,可能需要使用`AudioInputStream`和`Clip`。对于视频,可能需要使用...

    Applet 水中倒影

    音乐播放功能可能使用了Java的音频API,如`javax.sound.sampled`包中的类。开发者可以加载音频文件,设置音量和播放模式,然后在适当的时间点启动播放。 水中倒影的实现可能涉及到图像处理算法。开发者可能使用了...

    Java-Applet程序设计(ppt文档).ppt

    Applet可以用于集成音频、视频等多媒体元素,利用Java的多媒体库,如Java Sound API,实现丰富的媒体播放功能。 12.4 Applet中的鼠标和键盘事件 Applet可以通过重写`MouseListener`和`KeyListener`接口的方法来处理...

    俄罗斯方块(java+applet)

    在这个Java版本中,我们看到的是利用Java编程语言和Applet技术实现的《俄罗斯方块》。Applet是Java的一种小程序,可以在Web浏览器中运行,这使得用户无需安装额外软件即可在网页上体验游戏。 首先,我们需要理解...

    java-Applet录音机.zip.zip

    总结来说,这个Java Applet录音机项目是一个关于Java Applet和Java Sound API的实战示例,对于想要了解这两方面知识的开发者来说,它提供了一个很好的学习资源。通过分析和理解源代码,我们可以学习到如何在Web环境...

    applet_music_player.rar_Applet music_html音乐播放_player

    开发者可能使用了Java的音频处理API,如javax.sound.sampled包,来加载和播放音乐文件。这些API提供了读取、处理和播放音频的能力,可以处理各种音频格式,如MP3、WAV等。用户可能通过Applet界面选择不同的音乐文件...

    java小应用程序(applet)

    Java Sound API(javax.sound.sampled包)可以用于播放、录制、合成和处理音频。开发者需要加载音频样本,映射到钢琴键,并在键被按下时播放对应的音符。 6. **布局管理**:为了在Applet中合理地排列元素,需要了解...

    北大Java--Applet

    Applet可以使用Java的音频API播放声音文件,如`javax.sound.sampled`包中的类。对于图像操作,可以使用`Image`类和相关的处理方法。 6. **Applet的通信** Applet可以通过`getParameter()`获取HTML参数,或者使用`...

    Applet录音机.rar

    对于想要深入学习Java Applet录音机的开发者,可以从提供的源代码开始分析,理解如何使用Java Sound API来捕获音频,以及如何在Applet生命周期中管理录音过程。同时,也可以参考Java官方文档和其他在线教程来增强...

Global site tag (gtag.js) - Google Analytics