当前位置: 移动技术网 > IT编程>开发语言>Java > Java常用的一些多媒体文件基本操作方法简介

Java常用的一些多媒体文件基本操作方法简介

2019年07月22日  | 移动技术网IT编程  | 我要评论

播放幻灯片和动画

用实例说明播放幻灯片和动画的方法。

【例】小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示。

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; //循环逐张显示
    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); //创建一个线程
    mythread.start(); //启动线程执行
  }
  public void stop(){
    mythread = null;
  }
  public void run(){
    //线程的执行代码
    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类库中定义。小程序先创建audioclip对象,并用getaudioclip()方法为其初始化。代码形式如下:

  audioclip audioclip = getaudioclip(getcodebase(),”myaudioclipfile.au”);


如果要从网上获得音频文件,可用方法getaudioclip(url url, string name),根据url地址及音频文件name获得可播放的音频对象。

控制声音的播放有3个方法:play()播放声音,loop()循环播放和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创建音频对象,
    //applet类的getcodebase()方法可以获得小程序所在的html页面的url地址。
    buttonplay = new button("开始播放");
    buttonloop = new button("循环播放");
    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();
    }
  }
}

【例】如果声音文件较大或网络速度慢会影响小程序的初始化工作。这可用多线程技术解决。在一个级别较低的线程中完成音频对象的创建,即由后台载入声音文件,前台播放。

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); //创建新线程
    thread .setpriority(thread.min_priority);
    buttonplay = new button("开始播放");
    buttonloop = new button( "循环播放");
    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 中创建音频对象
    clip = getaudioclip(getcodebase(), "2.wav");
    text.settext("请稍等"); 
    if(clip ! = null){
      buttonplay.setbackground(color.red); buttonloop.setbackground(color.green); text.settext("您可以播放了");
    } //获得音频对象后通知可以播放
  }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网