该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
视频来自:优酷
在java中添加图片做动画效果,怎么一闪一闪的运动啊?怎样才能让它不闪的连续运动呢?
下面是代码,代码项目project里有两个类,一个是LoadImg,一个是Entry
图片放在src下的一个新建文件夹image里,调试的时候自己可以随便找个图片,在src下新建一个文件夹命名image,然后把图片房里去就行。
第一个Entry类
package project;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.ContainerAdapter;
import java.awt.event.ContainerEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.omg.CORBA.PUBLIC_MEMBER;
public class Entry extends Canvas{
Image img = LoadImg.getImage("image/ball.png");
// "image/ball.png"图片放在src下的一个新建文件夹image里
private double degree = Math.PI/4;
private double x = 20,y = 70;
Entry() {
new MyThread().start();
}
public void paint(Graphics g){
g.drawImage(img, (int)x, (int)y, null);
x += 10*Math.cos(degree);
y += 10*Math.sin(degree);
if(x>=660 || x<=0)
degree = Math.PI - degree;
if(y>=440 || y<0)
degree = -degree;
}
class MyThread extends Thread{
public void run() {
while(true){
repaint();
try {
Thread.sleep(40);
} catch (InterruptedException e) {
}
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800, 600);
frame.setLocation(100, 50);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Entry canvas = new Entry();
canvas.setSize(frame.getWidth(), frame.getHeight());
frame.add(canvas);
}
}
第二个LoadImg类
package project;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class LoadImg {
private LoadImg(){}
public static Image getImage(String path){
URL u = Entry.class.getClassLoader().getResource(path);
Image img = null;
try {
img = ImageIO.read(u);
} catch (IOException e) {
e.printStackTrace();
}
return img;
}
}