站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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)为宽高的方块么

是的


↑返回目录
前一篇: 如何把这个小游戏做的修改的更加漂亮????
后一篇: j2me播放媒体文件时,文件路径应该怎么写?