BBS水木清华站∶精华区
发信人: andrewleu (Andy), 信区: Java
标 题: An applet written by me
发信站: BBS 水木清华站 (Fri May 1 09:12:47 1998) WWW-POST
/*
这是我写的一个小程序
类似xwindows中的Xeyes
希望你能喜欢
*/
/*
<html>
<head>
<title>The J Eyes </title>
<!created by Liu Shu, 28-Apr-1998 -->
</head>
<applet code="Jeyes.class" width=500 height=300>
</applet>
<font SIZE="-1" FACE="Arial"><a HREF="andrewleu@hotmail.com">mailto:andrewleu@hotmail.com">andrewleu@hotmail.com
</html>
**/
import java.applet.*;
import java.awt.*;
import java.lang.Math;
public class Jeyes extends Applet implements Runnable
{
Dimension d;
Thread motor ;
Image offScreen;
Graphics offScreenGraphics;
boolean loaded ;
int w , h;
int x, y;
//mouse Position
boolean first=true;
int eyeX,eyeY;
//eyeball position
public void init(){
d=this.size();
w=d.width;h=d.height;
offScreen=createImage(w,h);
offScreenGraphics=offScreen.getGraphics();
}
public void paint(Graphics g)
{
int leftCoX,leftCoY,rightCoX,rightCoY;
float arcLeft,arcRight;
if (first)
{
g.setColor(Color.black);
g.fillOval(20,20,w/2-40,h-40);
g.fillOval(w/2+20,20,w/2-40,h-40);
g.setColor(Color.white);
g.fillOval(35,35,w/2-70,h-70);
g.fillOval(w/2+35,35,w/2-70,h-70);// Eyes
g.setColor(Color.black);
g.fillOval(w/4, h/2,50,50);
g.fillOval(3*w/4,h/2,50,50); //Eye balls
first=false;
}
else
{
offScreenGraphics.setColor(Color.black);
offScreenGraphics.fillOval(20,20,w/2-40,h-40);
offScreenGraphics.fillOval(w/2+20,20,w/2-40,h-40);
offScreenGraphics.setColor(Color.white);
offScreenGraphics.fillOval(35,35,w/2-70,h-70);
offScreenGraphics.fillOval(w/2+35,35,w/2-70,h-70); //Eyes
offScreenGraphics.setColor(Color.black);
// next line to calculate the arc
leftCoX=x-w/4;leftCoY=y-h/2;
rightCoX=x-3*w/4;rightCoY=y-h/2;
arcLeft=(float) Math.atan((double)leftCoY/leftCoX);
if(leftCoX<0) arcLeft+=3.1415926;//since atan result is between -pi/2 --p/2
arcRight=(float)Math.atan((double)rightCoY/rightCoX);
if(rightCoX<0) arcRight+=3.1415926;
eyeBallPosition(leftCoX ,leftCoY,arcLeft);
offScreenGraphics.fillOval(w/4+eyeX-25,h/2+eyeY-25,50,50);
eyeBallPosition(rightCoX,rightCoY,arcRight);
offScreenGraphics.fillOval(3*w/4+eyeX-25,h/2+eyeY-25,50,50);
//offScreenGraphics.fillOval(w/4, h/2,50,50);
//offScreenGraphics.fillOval(3*w/4,h/2,50,50); //Eye balls
g.drawImage(offScreen,0,0,null);
}
}
public void eyeBallPosition(int CoX, int CoY, float Arc)
{
if((CoX*CoX+CoY*CoY)<h/5*h/5)
//the mouse in the eye pit
{
eyeX=CoX;eyeY=CoY;
}
else
{
eyeX=(int)(Math.cos((double)Arc)*h/5);
eyeY=(int)(Math.sin((double)Arc)*h/5);
}
}
public void update(Graphics g)
{
paint(g);
}
public void run()
{
while(true)
{
//mouseMove(new Event e, new int x,new int y);
repaint();
try{
motor.sleep(100);
}
catch(Exception e)
{
System.out.println("Exception\n");
}
}
}
public void start()
{
motor=new Thread(this);
motor.setPriority(Thread.MIN_PRIORITY);
motor.start();
}
public void stop()
{
}
public boolean mouseMove(Event e,int X,int Y)
{
x=X;
y=Y;
//System.out.println("x="+x+" "+"y="+y);
return (true);
}
}
--
爱在不言中......
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.99.61.172]
BBS水木清华站∶精华区