package Assis;
//TrackedImageLoad.java主要演示MediaTracker的作用
import java.util.*;
import java.applet.*;
import java.awt.*;
/**
* 如果面对的问题是那些正被载入的的图像只有一部分被显示, 发生这种情况是因为这个图像还没有全部载入。为了解决这个问题java提供了MediaTracker
* 类,以跟踪多媒体对象的状态。使用它确定以个图像是否已经被完全载入,首先 必须为每一个具体的图像组件创建一个MediaTracker的实例。下面创建例子:
* MediaTracker imageTracker = new MediaTracker(this);
* 然后使用addImage方法将这个图像注册到imageTracker。下面是注册例子: imageTracker.addImage(anImage,
* id); 第二个参数id是控制取图优先次序的一个整数ID。载入图像时,小ID具有较高优先。
* 这个ID可以被用来询问imageTracker关于注册图像的状态。使用checkID方法进行 查询,ID图像全部载入返回true,否则返回false。
* checkID(id); 使用waitForID(id)方法强迫这个程序等待这个id登记的图像被完全载入,或者
* 可以使用waitForAll()方法等待所有已注册的图像被全部载入。下面示例将阻塞 这个程序知道图像被完全载入为止。 waitForID(int id)
* throws InterruptedException waitForAll() throws InterruptedException
*
* @author flystar
*
*/
public class TrackedImageLoad extends Applet implements Runnable {
private static final long serialVersionUID = 1L;
MediaTracker tracker;
int tracked;
int frame_rate = 5;// 图片显示速率
int current_img = 0;// 当前显示的图片
Thread motor;
static final int MAXIMAGES = 4;// 最大图片显示数量
Image[] img = new Image[MAXIMAGES];
String[] name = new String[MAXIMAGES];
boolean stopFlag;
// 对applet进行初始化
public void init() {
/**
* 类StringTokenizer和它的静态方法hasMoreTokens对参数img进行分割, 把得到的文件名方法数组name中
*/
tracker = new MediaTracker(this);
// getParameter(name)//获得html文件配置
StringTokenizer st = new StringTokenizer("user+icon", "+");
while (st.hasMoreTokens() && tracked < MAXIMAGES) {
name[tracked] = st.nextToken();
img[tracked] = getImage(getDocumentBase(), name[tracked] + ".png");
tracker.addImage(img[tracked], tracked);
tracked++;
}
}
// paint
public void paint(Graphics g) {
String loaded = "";
int donecount = 0;
for (int i = 0; i < tracked; i++) {
if (tracker.checkID(i, true)) {
donecount++;
loaded += name[i] + " ";
}
}
Dimension d = getSize();
int w = d.width;
int h = d.height;
if (donecount == tracked) {
frame_rate = 1;
Image i = img[current_img++];
int iw = i.getWidth(null);
int ih = i.getHeight(null);
g.drawImage(i, (w - iw) / 2, (h - ih) / 2, null);
if (current_img >= tracked)
current_img = 0;
} else {
int x = w * donecount / tracked;
g.setColor(Color.black);
g.fillRect(0, h / 3, x, 16);
g.setColor(Color.white);
g.fillRect(x, h / 3, w - x, 16);
g.setColor(Color.black);
g.drawString(loaded, 10, h / 2);
}
}
// start
public void start() {
motor = new Thread(this);
stopFlag = false;
motor.start();
}
// stop
public void stop() {
stopFlag = true;
}
// 整个程序的执行体
public void run() {
motor.setPriority(Thread.MIN_PRIORITY);
while (true) {
repaint();
try {
Thread.sleep(1000 / frame_rate);
} catch (InterruptedException e) {
}
if (stopFlag)
return;
}
}
}
分享到:
相关推荐
MediaTracker mediatracker= new MediaTracker(this); //实例化MediaTracker对象 image= getImage(getDocumentBase(), imageName); //得到Image实例 mediatracker.addImage(image, 0); //增加待加载的图片 ...
private MediaTracker imageTracker; //装载图片 private int height,width; //Applet的高度,宽度 public void init() { Dimension dim=getSize(); //得到Applet的尺寸 width = dim.width; //得到...
实现Java动画制作 : 1、自选一个动画(如动态的钟表指针位置)。 2、为消除动画的闪烁问题,使用了双重缓冲区技术和MediaTracker技术; 3、完善演示程序的功能(如整点报时);
MediaTracker imageTracker; //媒体装载器 int imageWidth,imageHeight,totalImage = 5,currentImage,nextImage; //图像宽度,高度,总的图像数量,当前图像编号及下一个图像编号 Thread thread; //图片切换...
Java图片翻转压缩尺寸,将图像压扁,加载图像的MediaTracker对象,建立一个图片翻折线程,绘制图像的Image对象,绘制图像的Grahpics对象,得到MediaTracker实例,压缩图像宽度,高度,增加图片到加载器中,线程休眠,...
利用Java的多线程,Swing,MediaTracker等技术实现。 雷电java代码 PPT 论文
java雷电游戏项目,利用Java的多线程,Swing,MediaTracker等技术实现。所有的东西一并奉上,不解释
用Java写的幻灯片播放程序,用到了一个媒体跟踪器类MediaTracker,使用了双缓冲技术来显示图片。
用java编程实现,采用MediaTracker来监视图像的加载,压缩包中的图片文件,请与编译后的class文件放在一起,如果用的是eclipse请放在工程文件夹的bin文件夹中
public class Album extends JApplet implements ActionListener{ private JComboBox C1; private String S1[],S2[]; private int totalPics; private Image offI,img[];... private MediaTracker imagetracker;
import java.awt.MediaTracker; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import ...
Java在窗口上实现信息提示。在加载图信息窗口上的图片时,用到java.awt 包中的MediaTracker 类。大多数的信息窗口是没有标题栏的,因此信息窗口不能由继承JFrame 类来实现。
Java图片拉伸变形实例,其实和图片缩放十分相似,图片翻折,绘制图像的Image对象和Grahpics对象,得到MediaTracker实例,for(int i=0; i(imageHeight/2); i ) { //实现图片的翻折效果 thread.sleep(30); //线程...
Java获取网页中的图片资源,启动线程,智能解析URL,加载图片资源,显示图片数据,测试时候请用IE打开...本Java例子主要是利用java.awt.MediaTracker 类来跟踪许多不同图像的载入状态并把它们组织为逻辑集。
Java为图片增加“火焰”特效, private Image backImage,foreImage; //前景和背景Image对象 ... private MediaTracker imageTracker; //装载图片 private int height,width; //Applet的高度,宽度
Socket聊天室源程序 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.io.*;...public class ChatClient extends JFrame implements ActionListener{ ...
在加载图信息窗口上的图片时,用到java.awt 包中的MediaTracker 类。使用该类的好处是可以更好地管理程序中要使用的图片,同时还可以保证图片和界面同时显示,避免了窗口显示后很久才显示图片的缺点。 运行环境:...
20个猜谜游戏 这是Emma Nguyen 20问题猜谜游戏的自述文件。 集成了新的Java类: java.awt.image.BufferedImage:Image类的子类,该子类描述具有可... 使用MediaTracker预加载从URL,文件名或字节数组创建的图像,以
MediaTracker mt=new MediaTracker(this); mt.addImage(imgPuzzle, 0); try{ mt.waitForAll(); }catch(Exception e){} //创建buffer并获取graphics对象 buff=createImage(imgPuzzle.getWidth(this),...
//getting all images and add them to the MediaTracker p1 = Toolkit.getDefaultToolkit().getImage("Image/p1.jpg"); mt.addImage(p1, 0); p2 = Toolkit.getDefaultToolkit().getImage("Image/p2.jpg"); mt....