新手求教问题(关于方块上下左右移动)

PejaMing 2006-10-20 02:11:58
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中的一样

求教大家,给我菜鸟解释解释
...全文
315 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2006-10-20
  • 打赏
  • 举报
回复
指定重绘区域的话能够减少不必要的绘制,提高程序运行速度和避免画面闪烁
yanhan0615 2006-10-20
  • 打赏
  • 举报
回复
肯定是repaint()可以实现,repaint()重绘整个屏幕,
repaint(x,y,width,height)重绘区域
「已注销」 2006-10-20
  • 打赏
  • 举报
回复
是的
PejaMing 2006-10-20
  • 打赏
  • 举报
回复
repaint(x,y-deltaY,deltaX,2*deltaY);

就是这个我不明白啊

是指定了重绘从(x,y-deltaY)为左上角起点

(deltaX,2*deltaY)为宽高的方块么

13,096

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧