📄 tools.java
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
public class Tools {
public static final int KEY_UP = 2;
public static final int KEY_DOWN = 4;
public static final int KEY_LEFT = 8;
public static final int KEY_RIGHT = 16;
public static final int KEY_FIRE = 32;
protected static final int SCREEN_WIDTH=176;//屏幕宽度
protected static final int SCREEN_HEIGHT=160;//屏幕高度
int objectIndex;//表示那个对象的动作序列
int actionIndex;//哪个对象的哪的动作
int frameIndex;//表示哪个动作中的哪一帧
int x;//角色坐标
int y;
boolean isRight;//是否向右
protected static final void drawNpcItemData(Graphics g,int objectIndex,int actionIndex,int frameIndex,
int posX,int posY,boolean isRight){
int ID = Data.npcItem0[objectIndex][actionIndex][frameIndex][0];
int offsetX = Data.npcItem0[objectIndex][actionIndex][frameIndex][1];
int offsetY = Data.npcItem0[objectIndex][actionIndex][frameIndex][2]-8;//在用地图编辑器是没注意,所以-8
int tempX;
int tempY;
g.setColor(0xff0000);
if(isRight){
tempX=posX+offsetX-(Data.allItemData[ID][3]>>1);
tempY=posY+offsetY-(Data.allItemData[ID][4]>>1);
// g.drawRect(tempX,tempY,MapData.allImage[ID].getWidth(),MapData.allImage[ID].getHeight());
g.drawImage(Data.allImage[ID],tempX - Map.leftTopX,tempY - Map.leftTopY,0);
if(Data.npcItem0[objectIndex][actionIndex][frameIndex].length==7){
// g.drawRect(tempX - Map.leftTopX+Data.npcItem0[objectIndex][actionIndex][frameIndex][3],tempY - Map.leftTopY+Data.npcItem0[objectIndex][actionIndex][frameIndex][4],
// Data.npcItem0[objectIndex][actionIndex][frameIndex][5],Data.npcItem0[objectIndex][actionIndex][frameIndex][6]);
}
}else{
Image img = getTransImage(Data.allImage[ID]);
// g.drawRect(tempX,tempY,MapData.allImage[ID].getWidth(),MapData.allImage[ID].getHeight());
// System.out.println(frameIndex);
int tx=img.getWidth();
if(img.getWidth()%2!=0){
tx+=1;
}
tempX=posX-offsetX-(tx>>1);
tempY=posY+offsetY-(Data.allItemData[ID][4]>>1);
g.drawImage(img,tempX - Map.leftTopX,tempY - Map.leftTopY,0);
if(Data.npcItem0[objectIndex][actionIndex][frameIndex].length==7){
// System.out.println("有");
// g.drawRect(tempX - Map.leftTopX,tempY - Map.leftTopY+Data.npcItem0[objectIndex][actionIndex][frameIndex][4],
// Data.npcItem0[objectIndex][actionIndex][frameIndex][5],Data.npcItem0[objectIndex][actionIndex][frameIndex][6]);
}
}
// g.drawRect(tempX - Map.leftTopX,tempY - Map.leftTopY,Data.allItemData[ID][3],Data.allItemData[ID][4]);
}
//**********************************以下为碰撞处理*******************//
public static final boolean isInRect(int x1, int y1, int w1, int h1,
int x2, int y2,int w2, int h2) //检测两个矩形是否相交
{
if (y2 + h2 < y1 || // 矩形B是否在矩形A上(情况1)
y2 > y1 + h1 || // 矩形B是否在矩形A下(情况2)
x2 + w2 < x1 || // 矩形B是否在矩形A的左边(情况3)
x2 > x1 + w1) // 矩形B是否在矩形A的右边(情况4)
{ //有上述一种情况者不发生碰撞
return false;
}
else //反之碰撞
{
return true;
}
}
//********************以下为左右镜像方法***********************//
// public Image getTransImage(Image srcImage, int sub_x, int sub_y, int sub_w, int sub_h, int transform)
// {
// Image result = null;
//
// int srcW = sub_w;
// int srcH = sub_h;
//
// Graphics g = null;
//
// // 左右镜像变换
// //result = Image.createImage(srcImage, 0, 0, srcW, srcH, Sprite.TRANS_MIRROR);
// result = Image.createImage(srcW, srcH);
// g = result.getGraphics();
// for ( int i = 0; i < srcW; i++ ) {
// g.setClip(i, 0, 1, srcH);
// g.drawImage(srcImage, i * 2 - srcW - sub_x, 0, Graphics.TOP | Graphics.LEFT);
// }
//
// return result;
// }
public static Image getTransImage(Image srcImage){
return Image.createImage(srcImage,0,0,srcImage.getWidth(),srcImage.getHeight(),Sprite.TRANS_MIRROR);
}
//*******************************画动画***********************//
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -