做屏保
来源:互联网 发布:mac如何散热 编辑:程序博客网 时间:2024/04/27 20:42
// 休眠一定是在内部类外面写
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 匿名内部类
new Thread() {
public void run() {
// 没有阻塞一定要sleep()一下
x += 5;
y += 5;
repaint();
};
}.start();
}
2、实现Runnerble接口,这时只要实现run()方法即可。只这样写线程开启不了,所以Runnerble一定要结合Thread().start();才能开启线程。如何将run()与Thread结合在一起成了一个值得注意的问题,就是要将一个Runnerble对象丢进Thread(),这样,这两者就结合起来了。如:
public void run() {
while (true) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x += speedX;
y += speedY;
// 碰撞判断
if (x < 0 || x > frame.getWidth() - r) {
speedX = -speedX;
// 调用改变颜色的函数
changeColor();
}
if (y < 0 || y > frame.getWidth() - r) {
speedY = -speedY;
changeColor();
}
}
}
//下面这句是放在构造函数中来开启线程
new Thread(this).start();
这个游戏除了线程用的比较多以外,还有就是随机值的产生,随机值的产生有两种方法:1、int r1=new Random().nextInt(256);这个产生的随机值是[0,256).2、int r2=int(Math.Random()*256).注意一定不能写成int r1=new Random().nextInt(1)*256,这个得到的值永远是0,之前写的时候就写成这样,所以小球的颜色就一直是黑色。之前还是没有清楚这个函数的真正含义,不过这个通过查API就可以明白了。其实这个游戏不是很难,只是要把里面的关系弄明白了,要把窗体作为小球的一个数据成员,然后在构造函数中将它进行初始化,这样就能将窗体和小球联系起来了。
做这个感觉最大的收获是当程序运行不是你期望的时候,可以从头看起,一步一步的点进去,只有搞清楚每一步是怎么做的,为什么要这么做,也许这样就能找到问题所在了。目前感觉自己对线程还不是很熟悉,希望通过接下来的项目能对它有一个更深入的了解。
- 做屏保
- 如何做屏保
- ubuntu 使用mp4做屏保
- 屏保
- 屏保
- 屏保
- 做了个屏保,学会了两个api函数
- C - 黑客帝国瀑布雨,可以更改做屏保:
- 一位素不相识的朋友做的代码雨屏保程序
- 用自己的名字做手机屏保,原�这么酷
- 泡泡屏保
- 屏保程序
- 制作屏保
- 去除屏保
- 屏保 KeyguardLock
- 气泡屏保
- 简单屏保
- android 屏保
- 省赛Colorful Rainbows
- 上传证件
- Spark(一): 基本架构及原理
- 从零开始,学习web前端之js基础
- 数据库事务隔离级别
- 做屏保
- leetcode_middle_77_275. H-Index II
- PLSQL Developer连接远程数据库方式
- inux-关机出现Telling INIT to go to single user mode.无法关机
- Redis和Memcache的区别总结
- 用Exclel制作日期统计折线图与柱状图
- Android 6.0 Gallery2 eclispe编译
- 【js学习之路】事件绑定函数中,将this换成调用对象导致的问题
- iOS根据UIVIew获取当前的UIViewController