Вступление
Примеры | Словарь |Вопросы
Sun Microsystems

Примеры программирования на Java

Аудио-приложение
(audio.java)

Описание апплета
Пример работы апплета
import java.applet.*;
import java.awt.*;
//=================================================

public class audio extends Applet
   {
     AudioClip clip;
     int width; // Данные переменные хранят ширину и
     int height;//	 высоту фонового изображения 
     Image background; // сюда загружается фоновое изображение ( в данном
     			//			случая картинка клавесина
     boolean done_loading_image = false; // Переменная становиться true
    	// когда изображение загружено  
     int index; // Текущий индекс звукового файла
     boolean test = false; // Данная переменная предназначена для 
                           // предотвращения появления сообщений об ошибках, 
      			   // в  Java - консоли ( clip.stop нельзя 
      			   // использовать раньше clip.loop) 
     public void init()
     {
        background = getImage(getCodeBase(), "pianino1.jpg" );
	    
	    width = size().width;  
	    height = size().height; 
	   
	    Image offScrImage = createImage(size().width, size().height);
	   
	   //Есть несколько способов вывода изображения на экран:
	   // аплет может рисовать изображение сразу в окне,
	   //но такой способ вызовет мерцание.
	   //Это происходит из-за того, что drawImage не дожидается 
	   //окончания загрузки изображения, а сразу возвращает управление. 
	   //Другой способ (а именно им загружается фоновое изображение) -
	   // сначало создается изображение вне экрана (createImage), а
	   // затем выводится на экран функцией drawImage.
	    
	    Graphics offScrGC = offScrImage.getGraphics();
	    offScrGC.drawImage(background, 0, 0, width, height, this);
	}
//===============================================================   
   public void Melody_ON( int i)	// Исполнение ноты   
	   
	{
     	 
         clip = getAudioClip(getCodeBase(), i+".au");
         clip.loop();
         test = true; // Теперь можно использовать clip.stop
        }
    
//=================================================================
   public void Melody_OFF()  // Конец звучания ноты
   	{
   	if (test)
   	 clip.stop();
   	 }      
//==================================================================
      public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
	      				
	      {
	      
	      // Пока фоновое изображение загружается, параметр
	      // infoflags не равен ALLBITS. Переменная done_loading_image
	      // равна false, и в строке статуса Вы видите Loading
	        
	        if ( infoflags == ALLBITS)
	          { 
	            done_loading_image = true;
	            
	            repaint();
	                       
	            return false;
	           }
	           
	           
	         else 
	             return true;
	        }
	  
//================================================================
      public void paint(Graphics g)
	
	  { 
	    
	    if (!done_loading_image)
	      showStatus("Loading");
	      
	    else 
	     {
	       showStatus("Done");
	       g.drawImage(background, 0, 0, width, height, this);
	     }
	  }
	 
//===================================================================
public boolean mouseDown(Event evt, int x, int y) 
	
	// Если указатель мыши помещается в заданную область аплета 
	// и нажимается любая клавиша мыши,
	// то  определяется индекс файла, который должен быть загружен
	
	{
	  if (( y > 6 & y < 61) & (x > 15 & x < 181 ))
	  
	    {
	    index = (x-15)/24;
	    Melody_ON(index);
	   
	    }
	    
	return true;
	}
	
 //===================================================================
 public boolean mouseUp(Event evt, int x, int y)
      
      // Реакция на события отпускания клавиши -- 
 	{
 	 Melody_OFF();
	 return true;
	}
//=========================================================================
public boolean mouseExit(Event evt, int x, int y)
	
	// Если указатель мыши вышел из окна аплета -- 
	// остановка проигрывания звука

	{
	Melody_OFF();
	return true;
	}
		
//========================================================================
		
}