bitmapsprite.java

来自「Sony Ericsson手机上的Facebook客户端全套代码」· Java 代码 · 共 240 行

JAVA
240
字号
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   BitmapSprite.java

package se.southend.drops.gui;

import java.io.PrintStream;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import se.southend.drops.pixelfilter.Filter;
import se.southend.drops.pixelfilter.Transition;
import se.southend.drops.scene.Sprite;

public class BitmapSprite extends Sprite
{

    public BitmapSprite()
    {
        transform = 0;
        filterEnabled = true;
    }

    public BitmapSprite(Image image)
    {
        transform = 0;
        filterEnabled = true;
        setImage(image);
    }

    public BitmapSprite(Image frames[])
    {
        transform = 0;
        filterEnabled = true;
        setFrames(frames);
    }

    public BitmapSprite(Image frameImage, int wFrame, int hFrame)
    {
        transform = 0;
        filterEnabled = true;
        int nbrFrames = (frameImage.getWidth() / wFrame) * (frameImage.getHeight() / hFrame);
        Image frames[] = new Image[nbrFrames];
        int xSrc = 0;
        int ySrc = 0;
        for(int i = 0; i < nbrFrames; i++)
        {
            if(xSrc > frameImage.getWidth() - wFrame)
            {
                System.out.println("Error: Image width not dividable by frame width");
                return;
            }
            frames[i] = Image.createImage(frameImage, xSrc, ySrc, wFrame, hFrame, 0);
            if(xSrc == frameImage.getWidth() - wFrame)
            {
                xSrc = 0;
                ySrc += hFrame;
            } else
            {
                xSrc += wFrame;
            }
        }

        setFrames(frames);
    }

    public void setImage(Image image)
    {
        if(image == null)
            this.frames = null;
        Image frames[] = {
            image
        };
        setFrames(frames);
    }

    public final Image[] getFrames()
    {
        return frames;
    }

    public final void setFrames(Image frames[])
    {
        this.frames = frames;
        setNbrFrames(frames.length);
    }

    public final Image getImage()
    {
        return frames == null ? null : frames[getFrameNbr()];
    }

    public final Image getTransformedImage()
    {
        if(frames == null)
        {
            return null;
        } else
        {
            Image image = frames[getFrameNbr()];
            return Image.createImage(image, 0, 0, image.getWidth(), image.getHeight(), transform);
        }
    }

    public final Image getFrameImage(int frameNbr)
    {
        return frames[frameNbr];
    }

    public int getWidth()
    {
        if(filterEnabled && filter != null)
            return filter.getWidth();
        if(transition != null)
            return transition.getWidth();
        if(rot90)
            return frames == null ? 0 : frames[getFrameNbr()].getHeight();
        else
            return frames == null ? 0 : frames[getFrameNbr()].getWidth();
    }

    public int getHeight()
    {
        if(filterEnabled && filter != null)
            return filter.getHeight();
        if(transition != null)
            return transition.getHeight();
        if(rot90)
            return frames == null ? 0 : frames[getFrameNbr()].getWidth();
        else
            return frames == null ? 0 : frames[getFrameNbr()].getHeight();
    }

    public final int getTransform()
    {
        return transform;
    }

    public void setTransform(int transform)
    {
        this.transform = transform;
        if(transform == 5 || transform == 6 || transform == 7 || transform == 4)
            rot90 = true;
        else
            rot90 = false;
    }

    public Transition getTransition()
    {
        return transition;
    }

    public void setTransition(Transition transition)
    {
        this.transition = transition;
    }

    public void setFadeIn(boolean fadeIn)
    {
        this.fadeIn = fadeIn;
    }

    public Filter getFilter()
    {
        return filter;
    }

    public void setFilter(Filter filter)
    {
        this.filter = filter;
    }

    public void setFilterEnabled(boolean enabled)
    {
        filterEnabled = enabled;
    }

    public void paint(Graphics graphics)
    {
        if(frames == null && filter == null)
        {
            System.out.println("Warning: BitmapSprite " + this + " displayed with no image");
            return;
        }
        if(!isOnScreen())
            return;
        int xScr = getScreenX();
        int yScr = getScreenY();
        if(transition != null)
        {
            if(filterEnabled && filter != null)
            {
                filter.render();
                if(fadeIn)
                    transition.setRGB(null, 0, 0, filter.getRGB(), filter.getWidth(), filter.getHeight());
                else
                    transition.setRGB(filter.getRGB(), filter.getWidth(), filter.getHeight(), null, 0, 0);
            }
            transition.paintAt(graphics, xScr, yScr);
        } else
        if(filterEnabled && filter != null)
        {
            filter.paintAt(graphics, xScr, yScr);
        } else
        {
            int frameNbr = getFrameNbr();
            if(frameNbr >= 0)
            {
                Image frame = frames[frameNbr];
                paintFrame(graphics, frame, xScr, yScr);
            }
        }
    }

    protected void paintFrame(Graphics graphics, Image frame, int xScr, int yScr)
    {
        if(transform == 0)
            graphics.drawImage(frame, xScr, yScr, 20);
        else
            graphics.drawRegion(frame, 0, 0, frame.getWidth(), frame.getHeight(), transform, xScr, yScr, 20);
    }

    public static final int UNIT = 8;
    public static final int TRANS_NONE = 0;
    public static final int TRANS_ROT90 = 5;
    public static final int TRANS_ROT180 = 3;
    public static final int TRANS_ROT270 = 6;
    public static final int TRANS_MIRROR = 2;
    public static final int TRANS_MIRROR_ROT90 = 7;
    public static final int TRANS_MIRROR_ROT180 = 1;
    public static final int TRANS_MIRROR_ROT270 = 4;
    private int transform;
    private boolean rot90;
    protected Image frames[];
    private Transition transition;
    private Filter filter;
    private boolean filterEnabled;
    private boolean fadeIn;
}

⌨️ 快捷键说明

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