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

📄 layermanager.java

📁 一款直版动作过关游戏
💻 JAVA
字号:


import javax.microedition.lcdui.Graphics;


public class layerManager
{

    private int nlayers;
    private layer component[];
    private int viewX;
    private int viewY;
    private int viewWidth;
    private int viewHeight;

    public layerManager()
    {
        component = new layer[4];
        setViewWindow(0, 0, 0x7fffffff, 0x7fffffff);
    }

    public void append(layer l)
    {
        removeImpl(l);
        addImpl(l, nlayers);
    }

    public void insert(layer l, int index)
    {
        if(index < 0 || index > nlayers)
        {
            throw new IndexOutOfBoundsException();
        } else
        {
            removeImpl(l);
            addImpl(l, index);
            return;
        }
    }

    public layer getLayerAt(int index)
    {
        if(index < 0 || index >= nlayers)
            throw new IndexOutOfBoundsException();
        else
            return component[index];
    }

    public int getSize()
    {
        return nlayers;
    }

    public void remove(layer l)
    {
        removeImpl(l);
    }

    public void paint(Graphics g, int x, int y)
    {
        int clipX = g.getClipX();
        int clipY = g.getClipY();
        int clipW = g.getClipWidth();
        int clipH = g.getClipHeight();
        g.translate(x - viewX, y - viewY);
        g.clipRect(viewX, viewY, viewWidth, viewHeight);
        int i = nlayers;
        do
        {
            if(--i < 0)
                break;
            layer comp = component[i];
            if(comp.visible)
                comp.paint(g);
        } while(true);
        g.translate(-x + viewX, -y + viewY);
        g.setClip(clipX, clipY, clipW, clipH);
    }

    public void setViewWindow(int x, int y, int width, int height)
    {
        if(width < 0 || height < 0)
        {
            throw new IllegalArgumentException();
        } else
        {
            viewX = x;
            viewY = y;
            viewWidth = width;
            viewHeight = height;
            return;
        }
    }

    private void addImpl(layer layer, int index)
    {
        if(nlayers == component.length)
        {
            layer newcomponents[] = new layer[nlayers + 4];
            System.arraycopy(component, 0, newcomponents, 0, nlayers);
            System.arraycopy(component, index, newcomponents, index + 1, nlayers - index);
            component = newcomponents;
        } else
        {
            System.arraycopy(component, index, component, index + 1, nlayers - index);
        }
        component[index] = layer;
        nlayers++;
    }

    private void removeImpl(layer l)
    {
        if(l == null)
            throw new NullPointerException();
        int i = nlayers;
        do
        {
            if(--i < 0)
                break;
            if(component[i] == l)
                remove(i);
        } while(true);
    }

    private void remove(int index)
    {
        System.arraycopy(component, index + 1, component, index, nlayers - index - 1);
        component[--nlayers] = null;
    }
}

⌨️ 快捷键说明

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