📄 sprite.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 + -