Java常用的一些多媒體文件基本操作方法簡介
播放幻燈片和動畫
用實例說明播放幻燈片和動畫的方法。
【例】小應用程序先將幻燈片讀入數(shù)組在存儲,單擊鼠標變換幻燈片,逐張顯示。
import java.applet.*import java.awt.*;
import java.awt.event.*;
public class Example7_7 extends Applet implements MouseListener{
final int number = 50; //假定幻燈片有50張
int count = 0;
Image[] card = new Image[number];
public void init(){
addMouseListener(this);
for (int i = 0; i < number; i++){
card[i] = getImage(getCodeBase(), "DSC0033" + i + ".jpg");
}
}
public void paint(Graphics g){
if ((card[count]) != null)
g.drawImage(card[count], 10, 10, card[count].getWidth(this),card[count].getHeitht(this), this);
}
public void mousePressed(MouseEvent e){
count = (count + 1) % number; //循環(huán)逐張顯示
repaint();
}
public void mouseRelease(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(Mouse Event e){}
public void mouseClicked(MouseEvent e){}
}
【例】小應用程序說明播放動畫的方法,要求播放的圖片和小程序放在相同的目錄中,程序通過快速顯示一組圖片造成顯示動畫的效果。小應用程序利用線程控制動畫圖片的逐顯示。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example7_8 extends Applet implements Runnable{
final int number = 50;
int count = 0;
Thread mythread;
Image[] pic = new Image[number];
public void init(){
setSize(300, 200);
for (int i = 0; i <= number; i++){
//載入動畫圖片
pic[i - 1] = getImage(getCodeBase(), "DSC0033" + i + ".jpg");
}
}
public void start(){
mythread = new Thread(this); //創(chuàng)建一個線程
mythread.start(); //啟動線程執(zhí)行
}
public void stop(){
mythread = null;
}
public void run(){
//線程的執(zhí)行代碼
while (true){
repaint();
count = (count + 1) % number; //改變顯示的圖片號
try{
mhythread.sleep(200);
}
catch (InterruptedExeception e){}
}
}
public void paint(Graphics g){
if ((pic[count] != null)
g.drawImage(pic[count], 10, 10, pic[count].getwidth(this), pic[count].getHeight(this), this);
}
}
播放聲音
Java語言老根據地的音頻格式有多種:au、aiff、wav、midi、rfm等。小程序要播放音頻文件,可使用類AudioClip,該類在java.applet.AudioClip類庫中定義。小程序先創(chuàng)建AudioClip對象,并用getAudioClip()方法為其初始化。代碼形式如下:
AudioClip audioClip = getAudioClip(getCodeBase(),”myAudioClipFile.au”);
如果要從網上獲得音頻文件,可用方法getAudioClip(URL url, String name),根據url地址及音頻文件name獲得可播放的音頻對象。
控制聲音的播放有3個方法:play()播放聲音,loop()循環(huán)播放和stop()停止播放。
【例】能播放聲音的小應用程序。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example7_9 extends Applet implements ActionListener{
AudioClip clip; //聲明一個音頻對象
Button buttonPlay, buttonLoop, buttonStop;
public void init(){
clip = getAudioClip(getCodeBase(), "2.wav");
//根據程序所在地址處聲音文件2.wav創(chuàng)建音頻對象,
//Applet類的getCodeBase()方法可以獲得小程序所在的html頁面的URL地址。
buttonPlay = new Button("開始播放");
buttonLoop = new Button("循環(huán)播放");
buttonStop = new Button("停止播放");
buttonPlay.addActionListener(this);
buttonStop.addActionListener(this);
buttonLoop.addActionListener(this);
add(buttonPlay);
add(buttonLoop);
add(buttonStop);
}
public void stop(){
clip.stop(); //當離開此頁面時停止播放
}
public void actionPerformed(ActionEvent e){
if (e.getSource() == buttonPlay){
clip.play();
}
else if (e.getSource() == buttonLoob){
clip.loop();
}
else if (e.getSource() == buttonStop){
clip.stop();
}
}
}
【例】如果聲音文件較大或網絡速度慢會影響小程序的初始化工作。這可用多線程技術解決。在一個級別較低的線程中完成音頻對象的創(chuàng)建,即由后臺載入聲音文件,前臺播放。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Hanoi extends applet implements Runnable, ActionListener{
AudioClip clip; //聲明一個音頻對象
textField text;
Thread thread;
Button buttonPlay, buttonLoop, buttonStop;
public void init(){
thread = new Thread(this); //創(chuàng)建新線程
thread .setPriority(Thread.MIN_PRIORITY);
buttonPlay = new Button("開始播放");
buttonLoop = new Button( "循環(huán)播放");
buttonStop = new Button("停止播放");
text = new textField(12);
buttonPlay.addActionListener(this);
buttonStop.addActionListener(this);
buttonLoop.addActionListener(this);
add(buttonPlay);
add(buttonLoop);
add(buttonStop);
add(text);
}
public void start(){
thread.start();
}
public void stop(){
clip.stop();
}
public void actionPerformed(ActionEvent e){
if (e.getSource() == buttonPlay(){
clip.play();
}
else if (e.getSource() == buttonLoop(){
clip.loop();
}
else if (e.getSource() == buttonStop(){
clip.stop();
}
}
public void run(){
//在線程thread 中創(chuàng)建音頻對象
clip = getAudioclip(getCodeBase(), "2.wav");
text.setText("請稍等");
if(clip ! = null){
buttonPlay.setBackground(Color.red); buttonLoop.setBackground(Color.green); text.setText("您可以播放了");
} //獲得音頻對象后通知可以播放
}
}
相關文章
Java 中 Date 與 Calendar 之間的編輯與轉換實例詳解
這篇文章主要介紹了Java 中 Date 與 Calendar 之間的編輯與轉換 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
MybatisPlus EntityWrapper如何自定義SQL
這篇文章主要介紹了MybatisPlus EntityWrapper如何自定義SQL,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
springboot Quartz動態(tài)修改cron表達式的方法
這篇文章主要介紹了springboot Quartz動態(tài)修改cron表達式的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
SpringMVC參數(shù)傳遞之基本數(shù)據類型和復雜對象說明
這篇文章主要介紹了SpringMVC參數(shù)傳遞之基本數(shù)據類型和復雜對象說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
Spring?Boot提高開發(fā)效率必備工具lombok使用
這篇文章主要為大家介紹了Spring?Boot提高開發(fā)效率的必備工具lombok使用方法示例及步驟說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
Java?SimpleDateFormat與System類使用示例詳解
這篇文章主要介紹了Java?SimpleDateFormat與System類使用示例,對于SimpleDateFormat類,是一個用來區(qū)分區(qū)域設置的方式進行日期的是指,以及對日期進行處理分析的一個實現(xiàn)類2022-11-11

