Javaでよく使われるマルチメディアファイルの基本的な操作方法の概要

5958 ワード

スライドとアニメーションの再生
スライドとアニメーションの再生方法を例で説明します.
【例】小さなアプリケーションは、まずスライドを配列に読み込み、マウスをクリックしてスライドを変換し、1枚ずつ表示します.

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などがあります.ウィジェットがオーディオファイルを再生するには、javaにあるクラスAudioClipを使用します.applet.AudioClipクラスライブラリで定義します.ウィジェットは、まずAudioClipオブジェクトを作成し、getAudioClip()メソッドで初期化します.コード形式は次のとおりです.

  AudioClip audioClip = getAudioClip(getCodeBase(),”myAudioClipFile.au”);

インターネットからオーディオファイルを取得する場合は、getAudioClip(URL url,String name)を使用して、urlアドレスおよびオーディオファイルnameに基づいて再生可能なオーディオオブジェクトを取得できます.
音声の再生を制御するには、プレイ()で音声を再生し、loop()でループ再生し、stop()で再生を停止する3つの方法があります.
【例】音声を再生できる小さなアプリ.

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("      ");
    } //             
  }
}