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

📄 sprite.java

📁 Sony Ericsson手机上的Facebook客户端全套代码
💻 JAVA
字号:
// 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:   Sprite.java

package se.southend.drops.scene;

import javax.microedition.lcdui.Graphics;

// Referenced classes of package se.southend.drops.scene:
//            Node, Camera

public abstract class Sprite extends Node
{

    public Sprite()
    {
        anchor = 3;
    }

    public void adjustToCamera(Camera camera)
    {
        int offset = offsets != null ? offsets[frameSequence[sequenceIndex]] : 0;
        if(isIgnoringCamera())
        {
            xScr = (((getX() >> 8) + Node.SCREEN_HALF_WIDTH) - getAnchorX()) + (offset >>> 16);
            yScr = (((getY() >> 8) + Node.SCREEN_HALF_HEIGHT) - getAnchorY()) + (offset & 0xffff);
        } else
        {
            xScr = (camera.getScreenX(getX()) - getAnchorX()) + (offset >>> 16);
            yScr = (camera.getScreenY(getY()) - getAnchorY()) + (offset & 0xffff);
        }
    }

    public final int getScreenX()
    {
        return xScr;
    }

    public final int getScreenY()
    {
        return yScr;
    }

    public void setScreenPosition(int x, int y)
    {
        xScr = x;
        yScr = y;
    }

    public int getAnchor()
    {
        return anchor;
    }

    public void setAnchor(int anchor)
    {
        this.anchor = anchor;
    }

    public int getAnchorX()
    {
        if((anchor & 0x1) != 0)
            return getWidth() >> 1;
        if((anchor & 0x8) != 0)
            return getWidth();
        else
            return 0;
    }

    public int getAnchorY()
    {
        if((anchor & 0x2) != 0)
            return getHeight() >> 1;
        if((anchor & 0x20) != 0)
            return getHeight();
        else
            return 0;
    }

    public boolean isOnScreen()
    {
        return xScr < Node.SCREEN_WIDTH && yScr < Node.SCREEN_HEIGHT && xScr + getWidth() >= 0 && yScr + getHeight() >= 0;
    }

    public final int getFrameNbr()
    {
        return frameSequence[sequenceIndex];
    }

    public final void setFrameNbr(int frameNbr)
    {
        int frameseq[] = {
            frameNbr
        };
        setFrameSequence(frameseq);
    }

    public final int getNbrFrames()
    {
        return nbrFrames;
    }

    public final void setNbrFrames(int nbrFrames)
    {
        initFrames(nbrFrames);
    }

    public final int[] getFrameSequence()
    {
        return frameSequence;
    }

    public final int getFrameSequenceLength()
    {
        return frameSequence.length;
    }

    public final int getSequenceIndex()
    {
        return sequenceIndex;
    }

    public final void setSequenceIndex(int sequenceIndex)
    {
        this.sequenceIndex = sequenceIndex;
    }

    public final int getDelayInFrame()
    {
        return frameDelay;
    }

    public final void setDelayInFrame(int frameDelay)
    {
        this.frameDelay = lastDelay = frameDelay;
    }

    public final void setFrameSequence(int frameseq[])
    {
        setDelayInFrame(0);
        frameSequence = frameseq;
        sequenceIndex = 0;
    }

    public final int getOffsetX(int frame)
    {
        return offsets[frame] >>> 16;
    }

    public final int getOffsetY(int frame)
    {
        return offsets[frame] & 0xffff;
    }

    public final void setOffset(int frame, int x, int y)
    {
        if(offsets == null || offsets.length != nbrFrames)
            offsets = new int[nbrFrames];
        offsets[frame] = x << 16 | y;
    }

    public boolean isFinished()
    {
        return getSequenceIndex() == getFrameSequenceLength() - 1 && frameDelay == lastDelay;
    }

    public void nextFrame(int delay)
    {
        if(delay < 0)
        {
            prevFrame(-delay);
            return;
        }
        if(++frameDelay > delay)
        {
            nextFrame();
            lastDelay = delay;
            frameDelay = 0;
        }
    }

    public void prevFrame(int delay)
    {
        if(delay < 0)
        {
            nextFrame(-delay);
            return;
        }
        if(++frameDelay > delay)
        {
            prevFrame();
            frameDelay = 0;
            lastDelay = delay;
        }
    }

    public void nextFrame()
    {
        sequenceIndex = sequenceIndex >= frameSequence.length - 1 ? 0 : sequenceIndex + 1;
    }

    public void prevFrame()
    {
        sequenceIndex = sequenceIndex <= 0 ? frameSequence.length - 1 : sequenceIndex - 1;
    }

    private final void initFrames(int nbrFrames)
    {
        this.nbrFrames = nbrFrames;
        int frameSequence[] = new int[nbrFrames];
        for(int i = 0; i < nbrFrames; i++)
            frameSequence[i] = i;

        setFrameSequence(frameSequence);
    }

    public abstract void paint(Graphics g);

    private int nbrFrames;
    private int sequenceIndex;
    private int frameDelay;
    private int lastDelay;
    private int frameSequence[];
    private int offsets[];
    private int xScr;
    private int yScr;
    private int anchor;
}

⌨️ 快捷键说明

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