Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

Оглавление

Звук в аплетах Java
Загрузка и проигрывание
Аплет PlayClip

Аплет PlayClip

Назад

Аплет PlayClip демонстрирует использование интерфейса AudioClip. В его окне (рис. 1) имеются три кнопки с названиями Play, Loop и Stop.

pic01.gif (1685 bytes)

Рис. 1. Окно аплета PlayClip

Сразу после запуска аплета кнопка Stop находится в заблокированном состоянии. Если нажать кнопку Play или Loop, начнется, соответственно, однократное проигрывание или проигрывание в цикле файла с именем kaas.au, распложенного в том же каталоге, что и двоичный файл аплета PlayClip.

Когда начинается проигрывание звукового файла, кнопка Stop разблокируется, что позволяет остановить проигрывание.

Исходные тексты приложения

Основной файл исходных текстов приложения приведен в листинге 1.

Листинг 1. Файл PlayClip.java

import java.applet.*;import java.awt.*;
public class PlayClip extends Applet{  private
 String m_ClipName = "kaas.au";  private final String    
 PARAM_ClipName = "ClipName";  AudioClip auClip;  Button btPlay; 
 Button btLoop;  Button btStop;  boolean fLoopPlay = false;
  public String getAppletInfo()  {   
 return "Name: PlayClip";  }
  public String[][] getParameterInfo()  {  
  String[][] info =    {      { 	PARAM_ClipName, 	
"String", 	"Audioclip filename"       },   
 };    return info;  }
 
 public void init()  {    String param;    param = getParameter(PARAM_ClipName);  
  if (param != null)      m_ClipName = param;

    btPlay = new Button("Play");    btLoop = new Button("Loop");   
 btStop = new Button("Stop");
  
  btStop.disable();
    add(btPlay);   
 add(btLoop);    add(btStop);
   
 auClip = this.getAudioClip(getCodeBase(),      m_ClipName);  }
  public boolean action(Event evt,    Object obj)  { 
   Button btn;
 
   if(evt.target instanceof Button)    {      btn = (Button)evt.target;
      if(evt.target.equals(btPlay))      {     
   auClip.play();        btStop.enable();      }
      else if(evt.target.equals(btLoop))     
 {        auClip.loop();        fLoopPlay = true;        btStop.enable();    
  }
      else if(evt.target.equals(btStop))  
    {        auClip.stop();        fLoopPlay = false;        btStop.disable();   
   }
      else      {      
  return false;      }
   
   return true;    }
 
   return false;  }

  public void paint(Graphics g)  {    Dimension dimAppWndDimension = size(); 
    g.setColor(Color.yellow);  
  g.fillRect(0, 0,       dimAppWndDimension.width  - 1,      
 dimAppWndDimension.height - 1);
  
  g.setColor(Color.black);    g.drawRect(0, 0,       dimAppWndDimension.width  - 1,  
     dimAppWndDimension.height - 1);  }
 
 public void start()  {    if(fLoopPlay)      auClip.loop();  }	
  public void stop()  {    if(fLoopPlay)    
  auClip.stop();  }}

В листинге 2 вы найдете исходный текст документа HTML, созданного автоматически для нашего приложения системой Java WorkShop.

Листинг 2. Файл PlayClip.tmp.html

<applet name="PlayClip" 
 code="PlayClip"  codebase="file:/e:/sun/articles/vol14/src/PlayClip" 
width="200" height="100" align="Top" 
 alt="If you had a java-enabled browser, 
you would see an applet here."><param name="ClipName"
 value="kaas.au"><hr>If your browser recognized the applet tag, 
you would see an applet here. <hr></applet>

Описание исходного текста

В главном классе аплета определено несколько полей и методов. Рассмотрим эти поля и наиболее важные методы.

Поля класса PlayClip

В поле m_ClipName хранится имя звукового файла, которое передается через параметр ClipName из документа HTML. По умолчанию для этого параметра используется значение kaas.au.

Строка PARAM_ClipName хранит имя указанного выше параметра.

Ссылка на интерфейс AudioClip хранится в поле auClip:

AudioClip auClip;

Следующие три поля хранят ссылки на кнопки, предназначенные для управления проигрыванием звукового файла:

Button btPlay;Button btLoop;Button btStop;

Поле fLoopPlay типа boolean используется для флага, которым отмечается режим проигрывания звукового файла в цикле.

Метод getParameterInfo

Метод getParameterInfo возвращает описание единственного параметра нашего аплета, через который передается имя звукового файла.

Метод init

Сразу после запуска аплета метод init получает значение параметра - имя звукового файла, и если этот параметр задан в документе HTML, записывает полученное имя в поле m_ClipName:

param = getParameter(PARAM_ClipName);if(param != null)
  m_ClipName = param;

Далее создаются три кнопки, управляющие звучанием аплета:

btPlay = new Button("Play");btLoop = new 
Button("Loop");btStop = new Button("Stop");

Кнопка Stop блокируется, так как на данный момент проигрывание еще не запущено:

btStop.disable();

Для блокирования вызывается метод disable, определенный в классе Button.

Подготовленные таким образом кнопки добавляются в окно аплета:

add(btPlay);add(btLoop);add(btStop);

Последнее, что делает метод init перед тем как возвратить управление, это получение ссылки на интерфейс AudioClip:

auClip = this.getAudioClip(  getCodeBase(),m_ClipName);

Адрес URL каталога, в котором расположен аплет, определяется с помощью метода getCodeBase, о котором мы говорили в предыдущей главе.

Метод action

Метод action получает управление, когда пользователь нажимает на одну из кнопок, расположенных в окне аплета. В зависимости от того, какая именно кнопка была нажата, выполняются различные действия.

Если пользователь нажал кнопку Play, вызывается метод play для запуска однократного проигрывания звукового файла:

auClip.play();btStop.enable();

Сразу после того как проигрывание будет запущено, приложение разблокирует кнопку Stop, предоставляя пользователю возможность прервать звучание.

В том случае, когда пользователь нажал кнопку Loop, вызывается метод loop, запусчкающий проигрывание звукового файла в цикле:

auClip.loop();fLoopPlay = true;btStop.enable();

После запуска устанавливается флаг fLoopPlay и разблокируется кнопка Stop.

И, наконец, если пользователь нажимает кнопку Stop, выполняется остановка проигрывания методом stop:

auClip.stop();fLoopPlay = false;btStop.disable();

Флаг fLoopPlay сбрасывается, после чего кнопка Stop блокируется.

Метод start

Метод start получает управление при первом запуска аплета, а также когда страница документа появляется вновь после того как пользователь временно переходил к просмотру другой страницы.

Наша реализация метода start возобновляет циклическое проигрывание, если оно выполнялось, когда пользователь покинул страницу с аплетом:

if(fLoopPlay)  auClip.loop();

Метод stop

Если пользователь запустил проигрывание звукового файла в цикле, а затем перешел к просмотру другой страницы, метод stop останавливает циклическое проигрывание:

if(fLoopPlay)  auClip.stop();

Когда пользователь вернется к просмотру нашей страницы, метод start, описанный выше, возобновит проигрывание звукового файла.

Назад












helloworld.ru © 2001-2021
Все права защищены