当前位置 : IT培训网 > Java开发 > Java教程 > Java编程之多媒体基础

Java编程之多媒体基础

时间:2016-09-02 17:43:11  来源:Java培训网  作者:IT培训网  已有:名学员访问该课程
小应用程序说明播放动画的方法,要求播放的图片和小程序放在相同的目录中,程序通过快速显示一组图片造成显示动画的效果。小应用程序利用线程控制动画图片的逐显示。

图像图形都介绍了,下面就让我们一起看看Java多媒体基础方面的知识吧,如果想要制作出好看的多媒体软件,还需要对本节内容进行研究与学习哦!

Java编程之多媒体基础重点: Java程序播放幻灯片和动画,播放声音和视频的方法。

播放幻灯片和动画

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

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

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){}

}

【例 12-8】小应用程序说明播放动画的方法,要求播放的图片和小程序放在相同的目录中,程序通过快速显示一组图片造成显示动画的效果。小应用程序利用线程控制动画图片的逐显示。

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()停止播放。

【例 12-9】能播放声音的小应用程序。

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();

        }

    }

}

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

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("您可以播放了");

        } //获得音频对象后通知可以播放

    }

}

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
Java教程
1、Java 概述
1.1 Java语言概述
1.2 Java虚拟机以及跨平台原理
1.3 Java的主要就业方向
1.4 Java的不同版本
1.5 Java开发环境搭建
1.6 第一个Java程序示例
1.7 Java类和对象的概念
1.8 Java类库及其组织结构
1.9 Java import
2、Java 语法基础
2.1 Java数据类型以及变量的定义
2.2 Java数据类型转换
2.3 Java运算符
2.4 Java流程控制
2.5 Java数组的定义和使用
2.6 Java字符串(String)
2.7 Java StringBuffer与StringBuider
2.8 强调一下编程风格
3、Java 类与对象
3.1 Java类的定义及其实例化
3.2 Java访问修饰符
3.3 Java变量的作用域
3.4 Java this关键字详解
3.5 Java方法重载
3.6 Java类的基本运行顺序
3.7 Java包装类、拆箱和装箱详解
3.8 再谈Java包
3.9 源文件的声明规则
4、Java 继承和多态
4.1 继承的概念与实现
4.2 Java super关键字
4.3 继承中的方法的覆盖和重载
4.4 多态和动态绑定
4.5 instanceof 运算符
4.6 多态对象的类型转换
4.7 Java static关键字
4.8 Java final关键字
4.9 Java Object类
5、面向对象高级特性
5.1 Java内部类及其实例化
5.2 内部类的分类
5.3 抽象类的概念和使用
5.4 接口的概念和使用
5.5 接口和抽象类的区别
5.6 Java 泛型
5.7 泛型通配符和类型参数的范围
6、异常处理
6.1 异常处理基础
6.2 异常类型Java语言中常见的异常类型有哪些
6.3 未被捕获的异常
6.4 try和catch的使用
6.5 多重catch语句的使用
6.6 try语句的嵌套
6.7 throw:异常的抛出
6.8 throws子句
6.9 finally块
6.10 Java的内置异常
6.11 创建自己的异常子类
6.12 断言
7、线程编程
7.1 线程的概念
7.2 Java线程模型
7.3 主线程
7.4 创建线程
7.5 创建多线程
7.6 isAlive()和join()的使用
7.7 线程优先级
7.8 线程同步
7.9 线程间通信
7.10 线程死锁
7.11 线程的挂起、恢复和终止
8、输入输出(IO)操作
8.1 输入输出基本概念
8.2 面向字符的输入流
8.3 面向字符的输出流
8.4 面向字节的输入输出流
8.5 面向字节流的应用
8.6 文件与目录管理
8.7 文件的随机读写
8.8 文件的压缩处理
9、常用类库、向量与哈希
9.1 Java基础类库
9.2 Object类
9.3 Java语言包(java.lang)简介
9.4 日期和时间类
9.5 向量及其应用
9.6 哈希表及其应用
10、图形界面(GUI)设计
10.1 图形界面设计基础
10.2 框架窗口
10.3 标签、按钮和按钮事件
10.4 面板
10.5 布局设计
10.6 文本框和文本区
10.7 文本框和文本区的输入输出
10.8 选择框和单选按钮
10.9 列表和组合框
10.10 菜单
10.11 对话框
10.12 滚动条
10.13 鼠标事件
10.14 键盘事件
11、图形、图像与多媒体
11.1 绘图基础
11.2 设置字型和颜色
11.3 绘图模式
11.4 Graphics类的绘图方法
11.5 Graphics2D类的绘图方法
11.6 图像处理基础
11.7 图像缓冲技术
11.8 多媒体基础
12、网络与数据库编程
12.1 IP地址和InetAddress类
12.2 统一资源定位符
12.3 套接字(Socket)
12.4 数据库连接
12.5 几个重要的类和接口
12.6 数据库查询
12.7 数据库更新
12.8 插入记录
12.9 修改记录
12.10 删除记录