Меню сайта
Категории новостей
Голосования
Вы ещё вернётесь на наш сайт?
Всего ответов: 42
Друзья
icq status
Главная » Статьи » Всё о создание Java игр

Аплет PlayClip

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

Сразу после запуска аплета кнопка 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, описанный выше, возобновит проигрывание звукового файла.

Категория: Всё о создание Java игр | Добавил: ALEX (03.11.2008)
Просмотров: 485 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]