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

📄 imageset.java

📁 这是我写的一个j2me的名为《黄金甲》的一个RPG游戏
💻 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 + -