Java动画编程基础第四部分

原创 2001年05月05日 01:21:00

使用图象:
现在,我们将重写paintFrame()来使图象动起来。这也就带来一些
问题,图象往往相当大,被一点点调入,将图象全部画出将花费很多时间,尤其
是通过一个较慢的连接,这也就是为什么drawImage带四个参数的原因,其中
第四个参数为一个ImageObserver对象。通过调用getImage()得到图象。

在屏幕上移动一幅图象:
world.gif作为背景,car.gif作为移动物体,且被绘制了两次,造成
一个两辆车比赛的场景。

Image world;
Image car;

public void init() {
String str = getParameter("fps");
int fps = (str != null) ? Integer.parseInt(str) : 10;
delay = (fps > 0) ? (1000 / fps) : 100;

world = getImage(getCodeBase(), "world.gif");
car = getImage(getCodeBase(), "car.gif");
}

public void paint(Graphics g) {
update(g);
}

public void paintFrame(Graphics g) {
Dimension d = size();
int w = world.getWidth(this);
int h = world.getHeight(this);

if ((w > 0) && (h > 0)) {
g.drawImage(world, (d.width - w)/2, (d.height - h)/2,
this);
}

w = car.getWIdth(this);
h = car.getHeight(this);

if ((w > 0) && (h > 0)) {
w += d.width;
g.drawImage(car, d.width - ((frame * 5) % w),
(d.height - h)/3, this);
g.drawImage(car, d.width - ((frame * 7) % w),
(d.height - h)/2, this);
}
}

显示一系列图象:
通过每一帧显示一幅图象来创建动画。我们仍用双缓冲的方法减小
闪烁。原因是我们显示的每一幅图象有一部分是透明的,因此需要在显示下
一幅前擦除当前的,如果不使用双缓冲的技术将导致闪烁。

Image frames[];
public void init() {
String str = getParameter("fps");
int fps = (str != null) ? Integer.parseInt(str) : 10;
delay = (fps > 0) ? (1000 / fps) : 100;

frames = new Image[10];
for (int i = 0; i < 10; i++) {
frames[i] = getImage(getCodeBase(), "duke/T" + i +
".gif");
}
}

public void paint(Graphics g) {
update(g);
}

public void paintFrame(Graphics g) {
g.drawImage(frames[frame % 10], 0, 0, null);
}

Java动画编程基础第四部分

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 21:10
  • 139

Java动画编程基础第一部分

基本技术:在Java中实现动画有很多种办法,但它们实现的基本原理是一样的,即在屏幕上画出一系列的帧来造成运动的感觉。我们先构造一个程序的框架,再慢慢扩展,使之功能比较齐备。使用线程:为了每秒中多次更新...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:20
  • 916

Java动画编程基础第三部分

双缓冲技术:另一种减小帧之间的闪烁的方法是使用双缓冲,它在许多动画applet中被使用。主要原理是创建一个后台图象,将一帧画入图象,然后调用drawImage()将整个图象一次画到屏幕上去。好处是大部...
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:21
  • 752

Java动画编程基础第二部分

画出每一帧:剩下的就是将每一帧图象绘出。在上例中调用了applet的repaint()来绘出每一帧图象。public void paint(Graphics g) {g.setColor(Color....
  • wxyxl
  • wxyxl
  • 2001年05月05日 01:20
  • 907

数据文件结构分析——第三部分

 3 Fexplorer操作简介3.1 主操作界面简介Fexplorer的主操作界面标题栏、主菜单、主控制面板、状态栏四部分,其中主菜单和主控制面板为用户提供互动操作。3.2 主菜单操作主菜单包括文件...
  • lzlishl
  • lzlishl
  • 2009年06月26日 22:02
  • 521

黑马程序员------50道JAVA基础编程练习题

------- android培训、java培训、期待与您交流! ---------- 50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对...
  • a768818702
  • a768818702
  • 2015年11月06日 14:18
  • 7372

JAVA基础编程练习题--50道

題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 刚开始真的无从下手,这么难的,怎么可以说...
  • anlidengshiwei
  • anlidengshiwei
  • 2015年07月06日 15:18
  • 1957

数据文件结构分析——第一部分

前 言出于各种各样的目的,软件开发人员经常会面对结构未知的数据文件,这可能是原于受客户委托,对第三方开发的软件功能进行有限扩展或二次开发;也可能原于学习和提高的目的;但更多的时候可能纯粹出于好奇。分析...
  • lzlishl
  • lzlishl
  • 2009年06月26日 21:44
  • 1071

Java 高级—— IO 基础

一、File 类 先看一下File 类的定义 public class File extends Object implements Serizliable Comparable 从定义看,File类...
  • zqixiao_09
  • zqixiao_09
  • 2016年01月26日 20:52
  • 879

Java基础部分重要笔记

Java修饰符的访问权限、Java输入易错区、Java类型强制转换、Java方法@Override(重写)与@Overload(重载)、Java多态详解、Java的finally修饰词、abstrac...
  • mihaidong
  • mihaidong
  • 2017年07月07日 13:11
  • 129
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java动画编程基础第四部分
举报原因:
原因补充:

(最多只允许输入30个字)