图像图形都介绍了,下面就让我们一起看看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("您可以播放了");

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

}

}

多媒体方面的应用程序java_Java编程之多媒体基础相关推荐

  1. c语言 程序 作文,编程之乐作文600字

    大多数人对编程不感兴趣,因为他们认为编程枯燥乏味,就是一堆乱七八糟的代码.可我偏偏对编程感兴趣,因为当你成功编出程序后,你会觉得很有成就感,那是无与伦比的. 编程,指的是用电脑制作程序,就是用各种代码 ...

  2. 程序员编程如何入门、进阶?

    作者 | 码农唐磊 来源 | 程序猿石头(ID:tangleithu) 背景 在之前的这篇文章中,我谈了谈读本科的时候都学了哪些计算机专业课和推荐了一些经典的技术书籍,然后推文封面中的这张图引起了不少 ...

  3. python快速编程入门课后程序题答案-Python编程从零基础到项目实战 完整PPT+习题答案...

    Python编程从零基础到项目实战是一本介绍Python相关知识的Python基础教程,内容涉及算法.Python数据分析.图形处理.Web开发.科学计算.项目管理.人工智能.Python爬虫等.其中 ...

  4. 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中

    程序员编程艺术第一~十章集锦与总结--面试.算法.编程 作者:July.编程艺术室. 出处:http://blog.csdn.net/v_JULY_v . 围绕"面试"." ...

  5. 程序员编程艺术:第二章、字符串是否包含问题

    程序员编程艺术:第二章.字符串是否包含及相关问题扩展 作者:July,yansha. 时间:二零一一年四月二十三日. 致谢:老梦,nossiac,Hession,Oliver,luuillu,雨翔,啊 ...

  6. 程序员编程艺术第十一章:最长公共子序列(LCS)问题

    程序员编程艺术第十一章:最长公共子序列(LCS)问题 0.前言 程序员编程艺术系列重新开始创作了(前十章,请参考程序员编程艺术第一~十章集锦与总结).回顾之前的前十章,有些代码是值得商榷的,因当时的代 ...

  7. 程序员编程经验_在没有实际编程的情况下成为更好的程序员

    程序员编程经验 In this talk, Ryan Johnson explains what was for him the invisible step to becoming a better ...

  8. 程序员编程艺术第二十七章:不改变正负数相对顺序重新排列数组(无解?)

    第二十七章:不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1) 前言 本文开始之前,顺道说个事:CSDN最近开始评选10大博客专栏,投票地址为:http://event.blog.csd ...

  9. 有人说中文编辑是解决中国程序员编程效率的秘密武器,请问他是一个银弹吗?...

    一."银弹" 首先在这里解释一下"银弹"的概念,顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器.当然现实中是没有狼 ...

最新文章

  1. 开源库BearSSL介绍及使用
  2. 几十亿打水漂!世界最大移动通信展MWC因疫情33年来首次取消,多方损失惨重...
  3. 2018专业创业赛事服务平台
  4. matlab mobile中文版,MATLAB Mobile
  5. Net5 已经来临,让我来送你一个成功
  6. UNIX网络编程笔记(1):TCP简介
  7. Linux如何从普通用户切换到root用户
  8. [Linux] Linux命令之pstree - 以树状图显示进程间的关系
  9. 计算机械公差什么软件好,Tolerance机械公差查询工具
  10. Mimikatz的攻击及防御
  11. 直播、录屏软件OBS Studio下载安装操作教程
  12. 2微信小程序的UI设计
  13. 28KHZ/40KHZ老款超声波开关线路板
  14. 概要设计 重要性_艺术留学——服装设计
  15. 怎么在线把pdf文件合并
  16. 双X轴的Echarts图
  17. KSO - sqlserver事务实现
  18. 使用计算机进入什么状态,装机过程中什么情况要进bios设置?
  19. 除了Micrsoft Office和WPS,有没有免费好用的office软件?
  20. Newstar Ctf 2022| week2 wp

热门文章

  1. 「AI 口罩检查官」上线,0.3 秒检查口罩佩戴情况
  2. 【人工智能】计算机审美,学的怎么样了?
  3. strip函数的特殊用法
  4. [GNU LD系列 3.3] 简单的链接脚本例程
  5. ubuntu16.04 SVN的安装与使用
  6. 中国象棋源码c语言,中国象棋C语言源代码.doc
  7. 从MySQL得到最大的性能
  8. 荣耀开年第一机!荣耀60 SE今日官宣:搭载天玑900处理器
  9. LG显示将在坡州工厂为iPhone 14 Pro Max生产120Hz刷新率屏幕
  10. 芒果超媒:子公司与咪咕文化签署合作框架协议