java学习——113、球球动起来
sleep()方法除了让文字滚动之外,图画也一样可以活动起来。
本篇示例如下视频所示:
其完整代码如下:
import java.awt.*;
import javax.swing.*;
public class ThreadBall extends JFrame implements Runnable{
private Ballcan ball;
public ThreadBall(){
super("球球动起来");
this.setBounds(200,200,200,200);
this.setVisible(true);
ball=new Ballcan();
this.getContentPane().add(ball);
}
public void run(){
while(true){//循环,无限次
ball.repaint();//重新调用raint()方法
try{Thread.sleep(100);}//休眠100ms
catch(Exception e){e.getStackTrace();}
}
}
public static void main(String args[]){
ThreadBall target=new ThreadBall();
Thread thread=new Thread(target);
thread.start();//线程启动
}
class Ballcan extends Canvas{//内部类,继承自画布类
intx,y;//球球的坐标
public Ballcan(){
x=10;
y=10;
}
public void paint(Graphics g){
g.setColor(Color.red);
g.fillOval(x, y, 50, 50);//画圆,在坐标x,y的位置
x+=10;//下次坐标x+10
y+=10;//下次坐标y+10
if(x>=this.getWidth()){//如果x坐标到底了,就让其从原点开始
x=0;
y=0;
}
if(y>=this.getHeight()){//如果y坐标到底了,就让其从原点开始
y=0;
x=0;
}
}
}
}
在本例中,可以将球改为矩形,椭圆等形状,也可以修改坐标,坐标轨迹不一样,图画的运行轨迹也会相应地发生改变。在很多的游戏当中,均可以用此种方法来实现,游戏中角色的变动。
如将x,y的坐标必为随机值,便可实现轨迹的随机出现。