播放幻灯片和动画
用实例说明播放幻灯片和动画的方法。
【例】小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示。
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("您可以播放了"); } //获得音频对象后通知可以播放 } }
本文向大家介绍Ruby中一些常用的文件操作方法小结,包括了Ruby中一些常用的文件操作方法小结的使用技巧和注意事项,需要的朋友参考一下 初学Ruby,很多需要学习,现在开始尝试使用Ruby来写一个脚本,其中用到了很多文件相关的操作,这里阶段地整理一些。便于后续的再次查找。 文件或目录是否存在 是否为文件 是否为目录 从路径中获取文件名 列出目录下的全部子文件 获得父目录
本文向大家介绍Python 操作文件的基本方法总结,包括了Python 操作文件的基本方法总结的使用技巧和注意事项,需要的朋友参考一下 Python 操作文件 编程语言对文件系统的操作是一项必不可少的功能,各种编程语言基本上都有对文件系统的操作,最简洁的莫过于linux里面shell的操作了,其次,则是python,ruby等动态语言的操作,那么,今天散仙来看下,在python里面如何使用一些常用
本文向大家介绍PHP操作文件的一些基本函数使用示例,包括了PHP操作文件的一些基本函数使用示例的使用技巧和注意事项,需要的朋友参考一下 在对文件进行操作时,不仅可以对文件中的数据进行操作,还可以对文件本身进行操作。例如复制文件、删除文件、截取文件及为文件重命名等操作。在PHP中已经提供了这些文件处理方式的标准函数,使用也非常容易,如下表所示: 在表中,四个函数如果执行成功,则都会返回TRUE,失败
本文向大家介绍Android中扫描多媒体文件操作详解,包括了Android中扫描多媒体文件操作详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章从系统源代码分析,讲述如何将程序创建的多媒体文件加入系统的媒体库,如何从媒体库删除,以及大多数程序开发者经常遇到的无法添加到媒体库的问题等。本人将通过对源代码的分析,一一解释这些问题。 Android中的多媒体文件扫描机制 Android提供了一个很棒
本文向大家介绍浅谈numpy库的常用基本操作方法,包括了浅谈numpy库的常用基本操作方法的使用技巧和注意事项,需要的朋友参考一下 NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组。所以这个一维数组就是N
更新 codec 首先更新codec,”菜单” —> “影音” —> “Install all media code”, 会自动下载并安装所有确实的 media codec。 音乐播放软件 网易云音乐 酷我音乐 Audacious 视频播放软件 UMPlayer