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