第一次写applet = = ……
实验项目:applet线程动画实验
一、 实验内容
1、 自行设计一个动画片或其他线程应用程序。
2、 完成实验报告的写作,并通过本机房网络提交,或课后email提交(cylincylin@163.com)
二、 实验要求
1、熟悉桌面上的“第七章”课件
2、在此基础上,自行设计一个动画片或其他线程应用程序
3、完成实验报告写作,课程结束前上交。
三、 实验目的
1、理解并掌握applet的设计。
2、理解并掌握Thread的设计。
3、理解并掌握Graphics的使用。
4、进一步学习JAVA的编程思想。
四、 实验条件
编译器: Jcreator
Java环境: JDK 6.0
操作系统: Windows XP SP2
五、思路分析
1、 要播放动画必须新建一个该动画的线程,实现它的paint()方法,描述各个时期应该重绘的内容,启动该线程即开始播放动画;
2、 要控制圆放大缩小,就要定义它的最大、最小半径,以及当前变化状态(放大、缩小);
3、 已知圆心坐标(x,y),半径r,可得圆的左上角坐标为(x-r/2,y-r/2);
4、 为使动画加快或放慢速度,可适当调节线程run方法中repaint后的线程休眠时间。为更好地体现动画效果,这里设置为80ms;
5、 为在实心圆外绘制多个圆框延续到最大半径,用一个循环绘制,每个间距离为10。
六、 程序代码
【ThreadApplet.java】
-
import java.applet.*;
-
import java.awt.*;
-
-
/**
-
* applet线程动画实验
-
* @author Cyin
-
* @author Lee
-
* @author Komi
-
* @author Skittles
-
* @since 2009-1-2
-
* @version 1.0
-
*/
-
-
/**
-
* 圆心x坐标
-
*/
-
private int x = 0;
-
-
/**
-
* 圆心y坐标
-
*/
-
private int y = 0;
-
-
/**
-
* 圆当前半径
-
*/
-
private int r = 0;
-
-
/**
-
* 圆最小半径
-
*/
-
private int minR = 0;
-
-
/**
-
* 圆最大半径
-
*/
-
private int maxR = 0;
-
-
/**
-
* 圆的颜色
-
*/
-
-
/**
-
* 圆当前变化的方向:true为放大,false为缩小
-
*/
-
private boolean direction = true;
-
-
/**
-
* 设定圆的信息
-
* @param x 圆心x坐标
-
* @param y 圆心y坐标
-
* @param r 圆初始半径
-
* @param minR 圆最小半径
-
* @param maxR 圆最大半径
-
* @param rgb 圆的颜色代码(十六进制的六位数)
-
* @param direction 圆变化的初始方向
-
*/
-
public void setRoundRect ( int x, int y, int r,
-
int minR, int maxR, int rgb, boolean direction ) {
-
this. x = x;
-
this. y = y;
-
this. r = r;
-
-
this. minR = minR;
-
this. maxR = maxR;
-
-
this. direction = direction;
-
}
-
-
/**
-
* 构造器:
-
*/
-
public ThreadApplet ( ) {
-
// 设定画布颜色
-
-
// 设定画布大小
-
this. setSize ( 300, 200 );
-
-
// 设定圆信息
-
this. setRoundRect ( 150, 100, 50, 30, 150,0x0, true );
-
-
// 创建线程并启动
-
}
-
-
/**
-
* 线程内容
-
*/
-
public void run ( ) {
-
while ( true ) {
-
try {
-
// 重绘画布
-
repaint ( );
-
-
// 每次休眠80ms
-
}
-
}
-
}
-
}
-
-
/**
-
* 绘制画布内容
-
*/
-
if (direction ) {
-
// 当方向为true(表圆正在放大)时
-
// 半径增加
-
r++;
-
-
// 当半径达到最大半径时
-
if (r==maxR ) {
-
// 改为缩小
-
direction = false;
-
}
-
}
-
else {
-
// 当方向为false(表圆正在缩小)时
-
// 半径减少
-
r--;
-
-
// 当半径为最小半径时
-
if (r==minR ) {
-
// 改为放大
-
direction = true;
-
}
-
}
-
-
// 设置画笔颜色
-
g. setColor (color );
-
// 填充一个圆心为(x,y)、半径为r的圆
-
g. fillRoundRect (x - r/ 2, y - r/ 2, r, r, 360, 360 );
-
-
// 绘制圆圈,使延续到最大半径
-
for ( int i= 1, t = 10; i <= (maxR-r )/ 10 +1 ;i++ ) {
-
// 绘制一个圆心在(x,y)、半径为r+10*i的圆(线框)
-
g. drawRoundRect (x - r/ 2 - t*i/ 2, y - r/ 2 - t*i/ 2, r + t*i, r + t*i, 360, 360 );
-
}
-
}
-
-
}
运行后生成ThreadApplet.class文件,在相同目录下新建一个html文件,内容为:
七、 调试与运行情况
八、 实验小结
1、理解并掌握了applet的设计。
2、理解并掌握了Thread的设计。
3、理解并掌握了Graphics的使用。
4、进一步学习了JAVA的编程思想。