当前页面: 开发资料首页 → J2ME 专题 → 新手求教问题(关于方块上下左右移动)
新手求教问题(关于方块上下左右移动)
摘要: 新手求教问题(关于方块上下左右移动)
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class GameAction extends MIDlet
{
private Display display;
public void startApp()
{
Display.getDisplay(this).setCurrent(new GameActionTestCanvas());
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
class GameActionTestCanvas extends Canvas
{
int width,height;
int deltaX,deltaY;
int x,y;
public GameActionTestCanvas()
{
deltaX=this.getWidth()/8;
deltaY=this.getHeight()/10;
width=deltaX*8;
height=deltaY*10;
x=0;
y=0;
}
public void paint(Graphics g)
{
g.setColor(0xFFFFFF);
g.fillRect(0, 0, width, height);
g.setColor(0x000000);
g.fillRect(x, y, deltaX, deltaY);
}
public void keyPressed(int keycode)
{
switch(getGameAction(keycode))
{
case Canvas.DOWN:
y+=deltaY;
if(y>=height)
{
y-=height;
repaint(x,0,deltaX,height);
}
else
{
repaint(x,y-deltaY,deltaX,2*deltaY);
}
break;
case Canvas.UP:
y-=deltaY;
if(y<0)
{
y+=height;
repaint(x,0,deltaX,height);
}
else
{
repaint();
}
break;
case Canvas.LEFT:
x-=deltaX;
if(x<0)
{
x+=width;
repaint();
}
else
{
repaint();
}
default:
}
}
}
}
请看这个程序中Canvas.DOWN,else后的repaint()方法中的参数是怎么实现的,我百思不得其解
后来试着不加参数直接写repaint(),也是可以实现移动的啊,就像Canvas.UP中的一样
求教大家,给我菜鸟解释解释
肯定是repaint()可以实现,repaint()重绘整个屏幕,
repaint(x,y,width,height)重绘区域
指定重绘区域的话能够减少不必要的绘制,提高程序运行速度和避免画面闪烁
repaint(x,y-deltaY,deltaX,2*deltaY);
就是这个我不明白啊
是指定了重绘从(x,y-deltaY)为左上角起点
(deltaX,2*deltaY)为宽高的方块么
是的