Java动画编程基础第一部分

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

基本技术:
在Java中实现动画有很多种办法,但它们实现的基本原理是一样的,即在
屏幕上画出一系列的帧来造成运动的感觉。
我们先构造一个程序的框架,再慢慢扩展,使之功能比较齐备。

使用线程:
为了每秒中多次更新屏幕,必须创建一个线程来实现动画的循环,这个循环
要跟踪当前帧并响应周期性的屏幕更新要求。实现线程的方法有两种,你可以创建
一个类Thread的派生类,或附和在一个Runnable的界面上。
一个容易犯的错误是将动画循环放在paint()中,这样占据了主AWT线程,而
主线程将负责所有的绘图和事件处理。
一个框架applet如下:

public
class Animator1 extends java.applet.Applet implements Runnable {
int frame;
int delay;
Thread animator;

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

public vois start() {
animator = new Thread(this);
animator.start();
}

public void run() {
while (Thread.currentThread() == animator) {
repaint();

try {
Thread.sleep(delay);
} catch (InterruptedException e) {
break;
}

frame++;
}
}

public void stop() {
animator = null;
}
}

在你的HTML文件中这样引用:
<applet code=Animator1.class width=200 height=200>
<param name=fps value=200>
</applet>
上面的参数fps表示每秒的帧数

保持恒定的帧速度:
上例中,applet只是在每两帧之间休眠一个固定的时间,但这有些缺点,有时
你会等很长时间,为了每秒显示十帧图象,不应该休眠100毫秒,因为在运行
当中也耗费了时间。
这里有一个简单的补救方法:
public void run() {
long tm = System.currentTimeMillis();
while (Thread.currentThread() == animator) {
repaint();

try {
tm += delay;
Thread.sleep(Math.max(0,tm -
System.currentTimeMillis()));
} catch (InterruptedException e) {
break;
}

frame++;
}
}

第一部分 基础篇(一)

mysql
  • YWF331
  • YWF331
  • 2018年02月02日 00:01
  • 153

《Java高手真经_编程基础卷:Java核心编程技术》(JAVA开发专家)扫描版[PDF]

编辑推荐 本书详细讲解Java语言基础开发中的各种技术,主要内容包括如下。   ·Java开发入门:JDK、JVM、Eclipse、Linux。   ·Java语法基础:类、抽象类、接口、内...
  • u012515589
  • u012515589
  • 2014年04月06日 20:20
  • 1071

JDBC编程基础 第一部分

1. 介绍许多开发者和用户都在寻找Java程序中访问数据库的便捷方法。由于Java是一个健壮,安全,易于使用的,易于理解且可以从网络中自动download ,所以它成为开发数据库应用的一种良好的语言基...
  • navyforce
  • navyforce
  • 2005年06月16日 16:55
  • 608

Java动画编程基础第二部分

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

Java动画编程基础第四部分

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

Java动画编程基础第三部分

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

MQTT基础——Part 1. 认识MQTT

MQTT基础——Part 1. 认识MQTT作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs本文是《MQTT基础》系列文章...
  • chszs
  • chszs
  • 2016年06月11日 11:29
  • 4402

黑马程序员_java基础第一部分

看完毕向东老师的视频整理出来的笔记,第一部分的,好些都忘了,整理下帮助以后翻看。 1、JVM、JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证jav...
  • ml5210
  • ml5210
  • 2015年08月23日 20:17
  • 185

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

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

java基础问题(第一部分)

转贴:0、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ pro...
  • Ranbiony
  • Ranbiony
  • 2008年05月31日 16:22
  • 356
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java动画编程基础第一部分
举报原因:
原因补充:

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