A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈红建 中级黑马   /  2012-8-15 13:05  /  1880 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package JavaApplet;

  2. import java.applet.Applet;
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.MediaTracker;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. //在Applet上绘制一个图像,可以调用drawImage静态方法
  10. public class JavaAppletDemo extends Applet
  11. {
  12. private MediaTracker mt;//来控制图片是否完全被加载
  13. private int imageSum = 5; //图片总数为10
  14. private Image image[];
  15. private int currentImage;//当前绘制的图像索引
  16. //双缓冲技术
  17. private Image imageBuff;
  18. private Graphics grs;
  19. public void init() {
  20. mt = new MediaTracker(this);//跟踪本对象
  21. imageBuff = createImage(600, 400);//创建图片缓冲
  22. grs = imageBuff.getGraphics();//将imageBuff关联到绘图
  23. grs.setColor(Color.WHITE);
  24. grs.fillRect(0, 0, 600, 400);
  25. image = new Image[imageSum];//为数组分配空间
  26. for(int x=0;x<imageSum;x++)

  27. {
  28. image[x] = getImage(getDocumentBase(),(x+1)+".gif");//getDocumentBase来返回URL路径
  29. mt.addImage(image[x], x);//将跟踪的图片添加到跟踪器
  30. }
  31. try {
  32. mt.waitForID(0);
  33. } catch (InterruptedException e) {

  34. e.printStackTrace();
  35. }

  36. System.out.println(getDocumentBase());
  37. System.out.println(getCodeBase());
  38. }
  39. @Override
  40. public void start() {
  41. currentImage = 0;//每次从新启动的时候图片的索引都被初始化
  42. grs.drawImage(image[currentImage],0 , 0, this);//将图形绘制到缓冲区当中
  43. currentImage = 1;
  44. }
  45. @Override
  46. public void stop() {

  47. }
  48. @Override
  49. public void destroy() {

  50. }


  51. int x=0;//移动的坐标
  52. public void paint(Graphics g) {

  53. g.drawImage(imageBuff, 0, 0, this);
  54. if(mt.checkID(currentImage,true))
  55. {
  56. grs.fillRect(0, 0, 600, 400);
  57. grs.drawImage(image[currentImage], x, 10, this);
  58. x++;
  59. // currentImage =++currentImage%10;
  60. currentImage++;
  61. if(currentImage==imageSum){currentImage=0;}

  62. }
  63. try {

  64. Thread.sleep(100);
  65. } catch (InterruptedException e) {

  66. e.printStackTrace();
  67. }

  68. repaint();

  69. }

  70. public void update(Graphics g) {
  71. <FONT color=red>//去除闪烁 我在这里重写了 update方法 为什么还会闪烁?</FONT>
  72. paint(g);
  73. }

  74. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

1 个回复

倒序浏览
申请加分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马