`

演示MediaTracker的作用

    博客分类:
  • Java
阅读更多
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;
		}
	}
}

 

分享到:
评论

相关推荐

    Java制作的图片倒影特效.rar

     MediaTracker mediatracker= new MediaTracker(this); //实例化MediaTracker对象  image= getImage(getDocumentBase(), imageName); //得到Image实例  mediatracker.addImage(image, 0); //增加待加载的图片  ...

    java雷电毕设全+论文

    【Java雷电毕设全+论文】是一个涵盖了Java编程、多线程技术、Swing图形用户界面库以及MediaTracker多媒体管理工具的毕业设计项目。这个项目不仅提供了完整的代码实现,还包括了相关的PPT演示文稿和论文,为学习者...

    Java图片处理-生成火焰效果.rar

     private MediaTracker imageTracker; //装载图片  private int height,width; //Applet的高度,宽度  public void init() {  Dimension dim=getSize(); //得到Applet的尺寸  width = dim.width; //得到...

    Java做的幻灯片

    在处理图形或者媒体文件时,尤其是像幻灯片这样需要展示多个图片的场景,`MediaTracker`能确保图片完全加载到内存中再进行显示,避免了因图片未完全加载而引起的闪烁或延迟问题。通过调用`addImage()`方法添加图片,...

    半透明按钮

    4. **MediaTracker**:`MediaTracker`类用于跟踪图像的加载状态,确保图像完全加载后才进行后续操作。 #### 实现步骤 1. **导入必要的库**: ```java import java.awt.AlphaComposite; import java.awt.Color; ...

    练习52拷贝粘贴图片(二).doc

    【描述】:这个文档是关于如何在Java环境中实现图片的拷贝和粘贴功能的编程练习,主要涉及了Image、ImageCanvas、MediaTracker以及Clipboard等类的使用。 【标签】:“互联网” - 虽然这个练习可能不直接与互联网...

    java提取系统剪切板信息

    MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(image, 0); // ...其他初始化代码 } // ...构造函数和其他方法 } ``` 这个类用于显示从剪切板中获取的图像。`ImageViewer`类...

    java实现的动画电子时钟

    在这个项目中,我们利用Java的AWT和Swing库来构建时钟,同时使用MediaTracker来确保图像资源正确加载。下面我们将详细探讨这个项目涉及的关键知识点。 1. **Java AWT 和 Swing 库**: - AWT(Abstract Window ...

    Java生成图片百叶窗变换效果.rar

     MediaTracker imageTracker; //媒体装载器  int imageWidth,imageHeight,totalImage = 5,currentImage,nextImage; //图像宽度,高度,总的图像数量,当前图像编号及下一个图像编号  Thread thread; //图片切换...

    Java图片翻转压缩尺寸.rar

    Java图片翻转压缩尺寸,将图像压扁,加载图像的MediaTracker对象,建立一个图片翻折线程,绘制图像的Image对象,绘制图像的Grahpics对象,得到MediaTracker实例,压缩图像宽度,高度,增加图片到加载器中,线程休眠,...

    java中插入图片

    // 创建MediaTracker对象,用于监控图像的加载状态 tracker = new MediaTracker(this); // 加载图像 spiritImage = Toolkit.getDefaultToolkit().getImage("C:\\WINDOWS\\Desktop\\spirit1.gif"); // 添加图像...

    java图像分割方法集合.doc

    在Java早期版本中,`MediaTracker`是必要的,因为它可以确保图像在被绘制之前已经完全加载。在这个例子中,`MediaTracker`用于加载并跟踪从URL获取的`Image`对象。 6. **资源管理**: `cache`是一个`Hashtable`,...

    Java将图片转换为byte数组例子总结

    MediaTracker mt = new MediaTracker(new Label()); mt.addImage(image, 0); mt.waitForAll(); } catch (InterruptedException e) { e.printStackTrace(); } return image; } ``` #### 四、总结 通过上述两...

    Java图像处理必读的基础知识.docx

    MediaTracker tracker = new MediaTracker(this); tracker.addImage(image_01, 1); tracker.waitForID(1, 10000); // 等待10秒 ``` 6. **颜色值转换**: - 从32位`int`型数据`cARGB`中提取RGB值: ```java ...

    java写的雷电(代码+论文+幻灯片+效果图)

    3. **MediaTracker**:在Java中,加载图像和音频资源可能会花费一定时间,MediaTracker可以帮助开发者跟踪这些资源的加载状态,确保在资源准备好后才开始游戏,避免了因资源未加载完毕而导致的程序异常。 4. **游戏...

    java多媒体资料.zip

    6. **MediaTracker**:Java中的MediaTracker类用于加载和监控图像资源的加载状态。在处理多媒体应用时,确保所有媒体资源已完全加载是非常关键的,MediaTracker可以帮助开发者管理这一过程。 7. **编码和解码库**:...

    Java动画制作 之动态时钟实现

    4. **MediaTracker技术**:在Java中,`MediaTracker`用于跟踪图像加载状态。在动态时钟动画中,如果使用了外部图像资源,如数字或指针的图片,`MediaTracker`可以帮助确保这些资源完全加载后再进行绘制,避免因图像...

    电子相册JAVA语言版本的

    - **MediaTracker类**:`MediaTracker`类用于跟踪多媒体资源(如图像)的加载状态。它可以帮助开发者确保图像完全加载完成之后再进行显示,从而避免了因图像未加载完成而导致的显示异常问题。这里通过实例化`...

    JAVA 电子相册 适合JAVA初学者

    public class Album extends JApplet implements ActionListener{ private JComboBox C1; private String S1[],S2[]; private int totalPics; private Image offI,img[];... private MediaTracker imagetracker;

    基于Java实现的图像识别

    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 ...

Global site tag (gtag.js) - Google Analytics