본문 바로가기

OM

마우스를 따라 다니는 원



MoveExample.java===================================================================================

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MoveExample extends JApplet
     implements Runnable, MouseMotionListener
{
    Thread clock;

    Image off;
    Graphics offG;

    Image bgImage;
    Image circle;
    int x, y;

    int mouseX, mouseY;

    public void init()
    {
        off = createImage(500, 500);
        offG = off.getGraphics();

        MediaTracker myTracker = new MediaTracker(this);

        bgImage = Toolkit.getDefaultToolkit().getImage(getClass().getResource("map.gif"));
        myTracker.addImage(bgImage, 0);
        circle = Toolkit.getDefaultToolkit().getImage(getClass().getResource("circle.gif"));
        myTracker.addImage(circle, 0);

        try
        {
            myTracker.waitForAll();
        }
        catch(InterruptedException ie){}

        while((myTracker.statusAll(true) & MediaTracker.COMPLETE)==0){}

        x = 100; y = 100;
        mouseX = 100; mouseY = 100;

        addMouseMotionListener(this);
    }

    public void start()
    {
        if(clock==null)
        {
            clock = new Thread(this);
            clock.start();
        }
    }

    public void paint(Graphics g)
    {
        g.drawImage(off, 0, 0, this);
    }

    public void run()
    {
        while(true)
        {
            try
            {
                clock.sleep(50);
            }
            catch(InterruptedException ie){}

            if(x<mouseX)
            {
                x++;
            }
            else if(x>mouseX){
                x--;
            }

            if(y<mouseY)
            {
                y++;
            }
            else if(y>mouseY){
                y--;
            }

            offG.drawImage(bgImage, 0, 0, this);
            offG.drawImage(circle, x, y, this);

            repaint();
        }
    }

    public void stop()
    {
        if(clock!=null && clock.isAlive())
        {
            clock = null;
        }
    }

    public void mouseMoved(MouseEvent e)
    {
        mouseX = e.getX();
        mouseY = e.getY();

        repaint();
    }

    public void mouseDragged(MouseEvent e){}
}

=====================================================================================================