00000000.htm
来自「水木清华BBS」· HTM 代码 · 共 108 行
HTM
108 行
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: jtiger (jim), 信区: Java <BR>标 题: 在JAVA applet中的动画 <BR>日 期: Tue Mar 12 14:46:40 1996 <BR> <BR>基本技术: <BR> 在Java中实现动画有很多种办法,但它们实现的基本原理是一样的,即在 <BR> 屏幕上画出一系列的帧来造成运动的感觉。 <BR> 我们先构造一个程序的框架,再慢慢扩展,使之功能比较齐备。 <BR> <BR> 使用线程: <BR> 为了每秒中多次更新屏幕,必须创建一个线程来实现动画的循环,这个循环 <BR>要跟踪当前帧并响应周期性的屏幕更新要求。实现线程的方法有两种,你可以创建 <BR>一个类Thread的派生类,或附和在一个Runnable的界面上。 <BR> 一个容易犯的错误是将动画循环放在paint()中,这样占据了主AWT线程,而 <BR>主线程将负责所有的绘图和事件处理。 <BR> 一个框架applet如下: <BR> <BR> public <BR> class Animator1 extends java.applet.Applet implements Runnable { <BR> int frame; <BR> int delay; <BR> Thread animator; <BR> <BR> public void init() { <BR> String str = getParameter("fps"); <BR> int fps = (str != null) ? Integer.parseInt(str) : 10; <BR> delay = (fps > 0) ? (1000 / fps) : 100; <BR> } <BR> <BR> public vois start() { <BR> animator = new Thread(this); <BR> animator.start(); <BR> } <BR> <BR> public void run() { <BR> while (Thread.currentThread() == animator) { <BR> repaint(); <BR> <BR> try { <BR> Thread.sleep(delay); <BR> } catch (InterruptedException e) { <BR> break; <BR> } <BR> <BR> frame++; <BR> } <BR> } <BR> <BR> public void stop() { <BR> animator = null; <BR> } <BR> } <BR> <BR> 在你的HTML文件中这样引用: <BR> <applet code=Animator1.class width=200 height=200> <BR> <param name=fps value=200> <BR> </applet> <BR> 上面的参数fps表示每秒的帧数 <BR> <BR> <BR> 保持恒定的帧速度: <BR> 上例中,applet只是在每两帧之间休眠一个固定的时间,但这有些缺点,有时 <BR> 你会等很长时间,为了每秒显示十帧图象,不应该休眠100毫秒,因为在运行 <BR> 当中也耗费了时间。 <BR> 这里有一个简单的补救方法: <BR> public void run() { <BR> long tm = System.currentTimeMillis(); <BR> while (Thread.currentThread() == animator) { <BR> repaint(); <BR> <BR> try { <BR> tm += delay; <BR> Thread.sleep(Math.max(0,tm - <BR>System.currentTimeMillis())); <BR> } catch (InterruptedException e) { <BR> break; <BR> } <BR> <BR> frame++; <BR> } <BR> } <BR> <BR> <BR> <BR>--编译自<JAVA World> <BR>-- <BR>Nothing is right, <BR> nothing is wrong. <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?