聲音和圖像的協調(Appletl.Java)
//源程序清單
import Java.awt.*;
import Java.applet.*;
import Java.util.*;
public class Appletl extends Applet implements Runnable
{
AudioClip audioClip;
Thread ShapeThread=null;
Random RandomNumber=new Random( );
Color ImageColor;
public void init( )
{
audioClip=getAudioClip(getCodeBase( ), "Sample.AU");// 創建一個AudioClip對象
}
public void start( )
{
if (ShapeThread= =null)
{
ShapeThread=new Thread(this);
ShapeThread.start( );
}
}
public void run()
{
while (true)
{
switch (RandomNumber.nextlnt(5)) { //把隨機數轉換為0~4之間的值
case 0: ImageColor=Color.black;
break;
case 1: ImageColor=Color.blue;
break;
case 2: ImageColor=Color.cyan;
break;
case3: ImageColor=Color.magenta;
break;
case4: ImageColor=Color.orange;
break;
default: ImageColor=Color.red;
}
try
{
ShapeThread.sleep(300); //線程睡眠
}
catch(InterruptedException e)
{
//忽略異常
repaint();
}
}
public void paint(Graphics g)
{
g.setColor(ImageColor);
audioClip.play(); //播放聲音
switch(RandomNumber.nextlnt(2)) //獲取隨機數與2整除的余數
{
case0:g.fillRect(25,25,200,200); //添充一個矩形
break;
default:g.fillOval(25,25,200,200); //添充一個橢圓
break;
}
}
}
該Applet的聲音處理非常簡單。它首先創建一個AudioClip對象並用getAudioClip把聲音文件賦予該對象,然後用AudioClip類的play方法播放聲音。該Applet使用Random對象產生隨機數。它首先根據隨機數確定顏色;然後在paint內根據隨機數確定畫圓還是畫方。Random類的nexsInt函數返回一個隨機整數(int型)。該Applet把隨機數轉換為一個0~4之間的值(在run函數內)和一個0~1之間的值(在paint函數內)。
需把如下的HTML語句放入Appletl.Html文件,為運行該Appletl做准備。
<Html>
<TITLE>Applet</TITLE>
<APPLET CODE="Appletl.class" WIDTH=300 HEIGHT=300>
</APPLET>
</Html>