글쓴이 :초보자 2000년 5월 08일 12:47:29
import java.awt.*;
import java.awt.event.*;
class MovePenguin extends Frame implements ActionListener, Runnable{
final int pace=2;
Image bgImg=getToolkit().getImage("images/jordan.jpg");
Image penguin[]=new Image[3];
int currentImg=0;
Point point=new Point();
boolean isMoving=false;
MovePenguin(String title){
super(title);
penguin[0]=getToolkit().getImage("images/penguin1.gif");
penguin[1]=getToolkit().getImage("images/penguin2.gif");
penguin[2]=getToolkit().getImage("images/penguin3.gif");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
dispose();
System.exit(0);
}
});
Button button=new Button("Action");
button.addActionListener(this);
add(button, "South");
doLayout();
setSize(300,500);
setVisible(true);
}
public static void main(String args[]){
new MovePenguin("MovePenguin");
}
public void actionPerformed(ActionEvent ae){
String cmd=ae.getActionCommand();
if(cmd.equals("Action")){
new Thread(this).start();
}
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
Dimension dim=getSize();
g.drawImage(bgImg,0,0,dim.width, dim.height, this);
if(isMoving)
g.drawImage(penguin[currentImg],point.x, point.y, this);
}
public synchronized void run(){
isMoving=true;
Dimension dim=getSize();
point.x=-penguin[0].getWidth(this);
//여기에서 point.x-=penguin[0].getWidth(this);
// 한 것과의 차이점은 무엇인지요?
// 교재에서는 위의 방법대로 나왔는데
//저는 아래방법처럼 했는데 Action버튼을 두번 누르니 두번째로 나오는 펭퀸은
// 화면의 오른쪽 끝부분에서 튀어나와서 금방 들어가 버리더군요.
//물론 책에서 나온대로 하면 화면 왼쪽부터 나와서 오른쪽으로 들어갑니다.
//이 두가지의 차이점은 무엇입니까?
point.y=dim.height/2;
while(point.x<dim.width){
try{
Thread.currentThread().sleep(50);
}catch(InterruptedException ie){}
point.x=+pace;
currentImg=(++currentImg)%3;
repaint();
}
isMoving=false;
}
}