⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysprite.java

📁 一款新手改造的J2me手机游戏项目
💻 JAVA
字号:
package com.ejoy;

import java.io.IOException;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
//Download by http://www.codefans.net
public class MySprite extends Sprite {
	
	public int m_spName;//精灵名称
	public int hp;//精灵血量
	public int spriteWidth;//精灵宽
	public int spriteHeight;//精灵高
	
	//各状态下的图片
	public Image standimg;
	public Image attackimg;
	public Image walkimg;
	
	
	
	/**
	 * 精灵类构造函数
	 * @param img 初始化精灵时的图片
	 * @param sWidth 初始化精灵时的精灵宽
	 * @param sHeight 初始化精灵时的精灵高
	 * @param spName 初始化精灵时的精灵名称
	 */
	public MySprite(Image img,int sWidth,int sHeight,int spName)
	{
		super(img,sWidth,sHeight);
		try
		{
			initImageFromStyle(spName);
		}catch(IOException e)
		{
			e.printStackTrace();
		}
		spriteWidth=sWidth;
		spriteHeight=sHeight;
		defineReferencePixel(sWidth/2, sHeight/2);
		hp=100;
		m_spName=spName;
	}
	
	/**
	 * 根据精灵名称初始化相应的状态图片
	 * @param spName 精灵名称
	 * @throws IOException 抛出IO异常
	 */
	public void initImageFromStyle(int spName) throws IOException
	{
		switch(spName)
		{
			case ROLE_DC:
				standimg=Image.createImage(GameMIDlet.PATH_DC_STAND);
				walkimg=Image.createImage(GameMIDlet.PATH_DC_WALK);
				attackimg=Image.createImage(GameMIDlet.PATH_DC_ATTACK1);
				break;
			case ROLE_ZF:
				standimg=Image.createImage(GameMIDlet.PATH_ZF_STAND);
				walkimg=Image.createImage(GameMIDlet.PATH_ZF_WALK);
				attackimg=Image.createImage(GameMIDlet.PATH_ZF_ATTACK1);
				break;
			case NPC_CB:
				standimg=Image.createImage(GameMIDlet.PATH_CB_STAND);
				walkimg=Image.createImage(GameMIDlet.PATH_CB_WALK);
				attackimg=Image.createImage(GameMIDlet.PATH_CB_ATTACK1);
				break;
			case NPC_DB:
				standimg=Image.createImage(GameMIDlet.PATH_DB_STAND);
				walkimg=Image.createImage(GameMIDlet.PATH_DB_WALK);
				attackimg=Image.createImage(GameMIDlet.PATH_DB_ATTACK1);
				break;
			case NPC_TM:
				standimg=Image.createImage(GameMIDlet.PATH_TM_STAND);
				walkimg=Image.createImage(GameMIDlet.PATH_TM_WALK);
				attackimg=Image.createImage(GameMIDlet.PATH_TM_ATTACK1);
				break;
			case NPC_ZL:
				standimg=Image.createImage(GameMIDlet.PATH_ZL_STAND);
				walkimg=Image.createImage(GameMIDlet.PATH_ZL_WALK);
				attackimg=Image.createImage(GameMIDlet.PATH_ZL_ATTACK1);
				break;			
		}
	}
	
	//取得距另一精灵的x距离
	public int getXDistanceFromSprite(MySprite sp)
	{		
		return this.getRefPixelX()-sp.getRefPixelX()/*-this.spriteWidth/2-sp.spriteWidth/2*/;
	}
	
	//取得距另一精灵的y距离
	public int getYDistanceFromSprite(MySprite sp)
	{
		return this.getRefPixelY()-sp.getRefPixelY()/*-this.spriteHeight/2-sp.spriteHeight/2*/;
	}
	
	
	
	
	//切换行走精灵
	public void changeToWalkSprite()
	{
		this.setImage(walkimg, spriteWidth, spriteHeight);
		switch(m_spName)
		{
			case ROLE_DC:
				this.setFrameSequence(MySprite.ROLE_DC_WALK_QUENE);	
				break;
			case ROLE_ZF:
				this.setFrameSequence(MySprite.ROLE_ZF_WALK_QUENE);
				break;
			case NPC_ZL:
				this.setFrameSequence(MySprite.NPC_ZL_WALK_QUENE);
				break;
			case NPC_CB:
				this.setFrameSequence(MySprite.NPC_CB_WALK_QUENE);
				break;
			case NPC_DB:
				this.setFrameSequence(MySprite.NPC_DB_WALK_QUENE);
				break;
			case NPC_TM:
				this.setFrameSequence(MySprite.NPC_TM_WALK_QUENE);
				break;
		}
		
	}
	
	
	//切换攻击精灵
	public void changeToAttackSprite()
	{
		this.setImage(attackimg, spriteWidth, spriteHeight);
		switch(m_spName)
		{
			case ROLE_DC:
				this.setFrameSequence(MySprite.ROLE_DC_ATTACK_QUENE);	
				break;
			case ROLE_ZF:
				this.setFrameSequence(MySprite.ROLE_ZF_ATTACK_QUENE);
				break;
			case NPC_ZL:
				this.setFrameSequence(MySprite.NPC_ZL_ATTACK_QUENE);
				break;
			case NPC_CB:
				this.setFrameSequence(MySprite.NPC_CB_ATTACK_QUENE);
				break;
			case NPC_DB:
				this.setFrameSequence(MySprite.NPC_DB_ATTACK_QUENE);
				break;
			case NPC_TM:
				this.setFrameSequence(MySprite.NPC_TM_ATTACK_QUENE);
				break;
		}
	}
	
	
	//恢复站立精灵状态
	public void resume()
	{
		this.setImage(standimg, spriteWidth, spriteHeight);
		switch(m_spName)
		{
			case ROLE_DC:
				this.setFrameSequence(MySprite.ROLE_DC_STAND_QUENE);	
				break;
			case ROLE_ZF:
				this.setFrameSequence(MySprite.ROLE_ZF_STAND_QUENE);
				break;
			case NPC_ZL:
				this.setFrameSequence(MySprite.NPC_ZL_STAND_QUENE);
				break;
			case NPC_CB:
				this.setFrameSequence(MySprite.NPC_CB_STAND_QUENE);
				break;
			case NPC_DB:
				this.setFrameSequence(MySprite.NPC_DB_STAND_QUENE);
				break;
			case NPC_TM:
				this.setFrameSequence(MySprite.NPC_TM_STAND_QUENE);
				break;
		}
	}
	
	
	
	
//--------------------------精灵一些控制数据--------------------------------
	
	//--------------------------貂蝉行走时的碰撞区域--------------------------
	
	public final static int DC_WALK_COLLISION_RECT_X=0;
	public final static int DC_WALK_COLLISION_RECT_Y=0;
	public final static int DC_WALK_COLLISION_RECT_WIDTH=0;
	public final static int DC_WALK_COLLISION_RECT_HEIGHT=0;
	
	
	//--------------------------貂蝉攻击时的碰撞区域--------------------------
	
	public final static int DC_ATTACK_COLLISION_RECT_X=0;
	public final static int DC_ATTACK_COLLISION_RECT_Y=0;
	public final static int DC_ATTACK_COLLISION_RECT_WIDTH=0;
	public final static int DC_ATTACK_COLLISION_RECT_HEIGHT=0;
	
	
	
	//-------------------------张辽行走时的碰撞区域-----------------------------
	public final static int ZL_WALK_COLLISION_RECT_X=0;
	public final static int ZL_WALK_COLLISION_RECT_Y=0;
	public final static int ZL_WALK_COLLISION_RECT_WIDTH=0;
	public final static int ZL_WALK_COLLISION_RECT_HEIGHT=0;
	
	//-------------------------张辽攻击时碰撞区域-----------------------------
	
	public final static int ZL_ATTACK_COLLISION_RECT_X=0;
	public final static int ZL_ATTACK_COLLISION_RECT_Y=0;
	public final static int ZL_ATTACK_COLLISION_RECT_WIDTH=0;
	public final static int ZL_ATTACK_COLLISION_RECT_HEIGHT=0;
	

	//-------------------------长兵行走时的碰撞区域------------------------------
	public final static int CB_WALK_COLLISION_RECT_X=0;
	public final static int CB_WALK_COLLISION_RECT_Y=0;
	public final static int CB_WALK_COLLISION_RECT_WIDTH=0;
	public final static int CB_WALK_COLLISION_RECT_HEIGHT=0;
	

	//-------------------------长兵攻击时的碰撞区域------------------------------
	
	public final static int CB_ATTACK_COLLISION_RECT_X=0;
	public final static int CB_ATTACK_COLLISION_RECT_Y=0;
	public final static int CB_ATTACK_COLLISION_RECT_WIDTH=0;
	public final static int CB_ATTACK_COLLISION_RECT_HEIGHT=0;

	//-----------------------短兵行走时的碰撞区域--------------------------------
	
	public final static int DB_WALK_COLLISION_RECT_X=0;
	public final static int DB_WALK_COLLISION_RECT_Y=0;
	public final static int DB_WALK_COLLISION_RECT_WIDTH=0;
	public final static int DB_WALK_COLLISION_RECT_HEIGHT=0;
	

	//-----------------------短兵攻击时的碰撞区域----------------------------------
	
	public final static int DB_ATTACK_COLLISION_RECT_X=0;
	public final static int DB_ATTACK_COLLISION_RECT_Y=0;
	public final static int DB_ATTACK_COLLISION_RECT_WIDTH=0;
	public final static int DB_ATTACK_COLLISION_RECT_HEIGHT=0;
	
	//-----------------------探马行走时的碰撞区域----------------------------------
	
	public final static int TM_WALK_COLLISION_RECT_X=0;
	public final static int TM_WALK_COLLISION_RECT_Y=0;
	public final static int TM_WALK_COLLISION_RECT_WIDTH=0;
	public final static int TM_WALK_COLLISION_RECT_HEIGHT=0;

	//----------------------探马攻击时的碰撞区域---------------------------------
	public final static int TM_ATTACK_COLLISION_RECT_X=0;
	public final static int TM_ATTACK_COLLISION_RECT_Y=0;
	public final static int TM_ATTACK_COLLISION_RECT_WIDTH=0;
	public final static int TM_ATTACK_COLLISION_RECT_HEIGHT=0;
	
	//------------------------各角色名称--------------------------------------
	public final static int ROLE_DC=0;
	public final static int ROLE_ZF=1;
	public final static int NPC_DB=2;
	public final static int NPC_CB=3;
	public final static int NPC_TM=4;
	public final static int NPC_ZL=5;
	
	
	//-------------------------各精灵的动作帧--------------------------------
	public final static int[] ROLE_DC_STAND_QUENE={0,0,0,1,1,1,2,2,2,3,3,3,4,4,4};
	public final static int[] ROLE_DC_WALK_QUENE={1,1,3,3,5,5,0,0,2,2,4,4};
	public final static int[] ROLE_DC_ATTACK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	
	
	public final static int[] ROLE_ZF_STAND_QUENE={1,1,3,3,5,5,7,7,9,9,0,0,2,2,4,4,6,6,8,8};
	public final static int[] ROLE_ZF_WALK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] ROLE_ZF_ATTACK_QUENE={1,1,3,3,5,5,0,0,2,2,4,4};
	
	
	public final static int[] NPC_DB_WALK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_DB_ATTACK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_DB_STAND_QUENE={0,0,0,1,1,1,2,2,2,3,3,3};
	
	public final static int[] NPC_CB_WALK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_CB_ATTACK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_CB_STAND_QUENE={0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5};
	
	public final static int[] NPC_TM_WALK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_TM_ATTACK_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_TM_STAND_QUENE={0,0,0,1,1,1,2,2,2,3,3,3};
	
	public final static int[] NPC_ZL_STAND_QUENE={1,1,3,3,5,5,7,7,0,0,2,2,4,4,6,6};
	public final static int[] NPC_ZL_WALK_QUENE={0,0,1,1,2,2,3,3,4,4,5,5,6,6};
	public final static int[] NPC_ZL_ATTACK_QUENE={0,0,1,1,2,2,3,3,4,4};
	
	
	//-----------------------------各精灵尺寸---------------------------------
	
	public final static int ROLE_DC_SPWIDTH=54;
	public final static int ROLE_DC_SPHEIGHT=72;
	
	public final static int ROLE_ZF_SPWIDTH=60;
	public final static int ROLE_ZF_SPHEIGHT=108;
	
	public final static int NPC_CB_SPWIDTH=50;
	public final static int NPC_CB_SPHEIGHT=75;
	
	public final static int NPC_DB_SPWIDTH=58;
	public final static int NPC_DB_SPHEIGHT=112;
	
	public final static int NPC_TM_SPWIDTH=60;
	public final static int NPC_TM_SPHEIGHT=108;
	
	public final static int NPC_ZL_SPWIDTH=60;
	public final static int NPC_ZL_SPHEIGHT=80;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -