📄 imageset.java
字号:
/*
* ImageSet.java
*
* Created on 2005年12月26日, 上午10:27
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
package Engine;
import javax.microedition.lcdui.Image;
/**
*
* @author YBGame_xupan
*/
public class ImageSet {
private Image[][] Frames;
private Image[] Frame;
private String[] framesName;
private String[] frameName;
private static ImageSet imageset=null;
private Resource res;
// Creates a new instance of ImageSet
public void creatResource(String resFileName){
res=Resource.createResource(resFileName);
}
public void destroyResource(){
res=null;
}
//增加精灵
public static ImageSet getInstance(){
if (imageset==null){
imageset=new ImageSet();
}
return imageset;
}
public final Image getFrame(String frameNameArg){
int index=frameName2Index(frameNameArg);
return Frame[index];
}
public final Image getFrameInFrames(String framesNameArg,int index){
int findex=framesName2Index(framesNameArg);
return Frames[findex][index];
}
public final Image[] getFrames(String framesNameArg){
int index=framesName2Index(framesNameArg);
return Frames[index];
}
public final int getFramesLength(String framesNameArg){
int index=framesName2Index(framesNameArg);
return Frames[index].length;
}
public void addImageFrame(String fileNameArg,String frameNameArg){
if(frameName==null){
Frame=new Image[1];
frameName=new String[1];
Frame[0]=res.createImage(fileNameArg);
frameName[0]=frameNameArg;
}else{
int frameNum=frameName.length;
Frame = Tools.expandArray(Frame, 1);
frameName=Tools.expandArray(frameName, 1);
Frame[frameNum]=res.createImage(fileNameArg);
frameName[frameNum]=frameNameArg;
}
}
public void addImageFrames(String fileNameArg, String framesNameArg, int sourceXArg, int sourceYArg, int framesWideArg, int framesHighArg, int frameWidthArg, int frameHeightArg){
Image sourceImage=res.createImage(fileNameArg);
if (framesName==null){
Frames=new Image[1][];
framesName=new String[1];
Frames[0]=extractFrames(sourceImage,sourceXArg, sourceYArg, framesWideArg, framesHighArg, frameWidthArg, frameHeightArg);
framesName[0]=framesNameArg;
}else{
int framesNum=framesName.length;
Frames=Tools.expandArray(Frames,1);
framesName=Tools.expandArray(framesName,1);
Frames[framesNum]=extractFrames(sourceImage,sourceXArg, sourceYArg, framesWideArg, framesHighArg, frameWidthArg, frameHeightArg);
framesName[framesNum]=framesNameArg;
}
}
public void addImageFrames(String[] filesNameArg, String framesNameArg){
if (framesName==null){
Frames=new Image[1][filesNameArg.length];
framesName=new String[1];
for (int i=0;i<filesNameArg.length;i++){
Frames[0][i]=res.createImage(filesNameArg[i]);
}
framesName[0]=framesNameArg;
}else{
int framesNum=framesName.length;
Frames=Tools.expandArray(Frames,1);
framesName=Tools.expandArray(framesName,1);
Frames[framesNum]=new Image[filesNameArg.length];
for (int i=0;i<filesNameArg.length;i++){
Frames[framesNum][i]=res.createImage(filesNameArg[i]);
}
framesName[framesNum]=framesNameArg;
}
}
public void removeAll(){
Frame=null;
frameName=null;
Frames=null;
framesName=null;
}
private int frameName2Index(String frameNameArg){
int i;
for(i=0;i<frameName.length;i++){
if (frameName[i].compareTo(frameNameArg)==0){
break;
}
}
if(i<frameName.length) return i;
System.out.println("Can't find "+frameNameArg+" in ImageSet");
return -1;
}
private int framesName2Index(String framesNameArg){
int i;
for(i=0;i<framesName.length;i++){
if (framesName[i].compareTo(framesNameArg)==0){
break;
}
}
if(i<framesName.length) return i;
System.out.println("Can't find "+framesNameArg+" in ImageSet");
return -1;
}
public final static Image getImageRegion(Image source, int x, int y, int width, int height) {
// create a placeholder for our resulting image region
Image result = Image.createImage(width, height);
if (x + width > source.getWidth() || y + height > source.getHeight())
System.out.println("Warning: attempting extract using (" +
x + "," + y + "," + width + "," + height + ") when image is " +
"(" + source.getWidth() + "," + source.getHeight() + ")");
// draw the image, offset by the region starting position
result.getGraphics().drawImage(source, -x, -y, Tools.GRAPHICS_TOP_LEFT);
return result;
}
public final static Image[] extractFrames(Image sourceImage, int sourceX,
int sourceY,
int framesWide, int framesHigh,
int frameWidth, int frameHeight) {
// extract all the frames from the source image
Image[] frames = new Image[framesWide * framesHigh];
int frameCount = 0;
for (int fy = 0; fy < framesHigh; fy++)
for (int fx = 0; fx < framesWide; fx++)
frames[frameCount++] =
getImageRegion(sourceImage, sourceX + (fx * frameWidth),
sourceY + (fy * frameHeight),
frameWidth, frameHeight);
return frames;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -