小人欢乐行走

就是准备四张行走的图片,然后切换

面板代码

package jj;

import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class spipanel extends JPanel implements Runnable {
	//绘制线程类
	private Sprite player;
	public spipanel() {
		// TODO Auto-generated constructor stub
	player=new Sprite();
	player.init(500, 250);
	Thread t=new Thread(this);
	t.start();
	}
	//重载run方法
	@Override
	public void run() {
		// TODO Auto-generated method stub
		//线程无线循环
		while (true) {
			player.UpdateSprite();//更新
			try {
				Thread.sleep(500);//线程休
			} catch (Exception e) {
				// TODO: handle exception
			}
			repaint();//窗口重绘
		}
	}
	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
		//屏幕清空
		g.clearRect(0,0,this.getWidth(), this.getHeight());
		player.DrawSprite(g, this);
	}
	public static void main(String[] args) {
		JFrame frame = new JFrame("显示图像");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,800);
       
        frame.getContentPane().add(new spipanel());
//        frame.pack();
        frame.setVisible(true);
	}

}

精灵代码

package jj;

//Sprite类
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.ImageObserver;

import javax.swing.JPanel;
public class Sprite { 
  /** Sprite的X,Y坐标**/
  public int m_posX = 0,m_posY = 0;
  private Image pic[] = null; // Sprite图片数组
  /** 当前帧的ID **/
  private int mPlayID = 0;
  /**是否更新绘制Sprite**/
  boolean mFacus = true;
  public Sprite () {
      pic = new Image[4];
      
  	for (int i = 0; i < 4; ++i) {
  			pic[i] = Toolkit.getDefaultToolkit().getImage(
  					"D:\\programing\\jj\\src\\imager_stu\\a"+ (i+1) + ".png");
  			System.out.println("D:\\programing\\jj\\src\\imager_stu\\a"+ (i+1) + ".png");}
  }    
  /**初始化坐标**/
  public void init(int x, int y) {
	    m_posX = x;
	    m_posY = y;
  }    
  /**设置坐标**/
  public void set(int x, int y) {
	    m_posX = x;
	    m_posY = y;
  }    
  /**绘制精灵**/
  public void DrawSprite (Graphics g,JPanel i)
	{
  	g.drawImage(pic[mPlayID],m_posX,m_posY,(ImageObserver)i);
  	mPlayID++;  //下一帧图像
  	if(mPlayID==4) mPlayID=0;
  }
//Sprite坐标更新主要修改x坐标(水平方向)值,每次15个像素。当然也可以修改Y坐标(垂直方向)值,这里为了简单化没修改Y坐标值(垂直方向)。 
 /**更新精灵的坐标点**/
 public void UpdateSprite () {
	    if (mFacus==true)  
	    	m_posX -= 5;
	    
  }    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值