Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2010, 23:58
feivelfabiola
 
Fecha de Ingreso: julio-2009
Mensajes: 26
Antigüedad: 15 años, 6 meses
Puntos: 0
Sonrisa Me ayudan por favor con duda de J2ME?

Tengo el siguiente codigo que mueve un triangulo, el problema es que repaint() no borra lo anterior y se encima la imagen del triangulo cuando se mueve, y mi duda es como puedo corregir esto?????:

en mi clase de java:

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;


public class CanvasMT extends Canvas{
protected int background = 0xc0c0c0;

int gw = getWidth();
int gh = getHeight();
int x1 = gw/2 - 40;
int y1 = gh/2;
int x2 = gw/2;
int y2 = gh/2 - 40;
int x3 = gw/2 + 40;
int y3 = gh/2;
public CanvasMT(){
this.setFullScreenMode(true);
}

protected void paint(Graphics g) {

g.setColor(209,95,238);
g.drawString("Mueve el triangulo", getWidth () / 2, 5, Graphics.HCENTER | Graphics.TOP);
g.fillTriangle(x1, y1, x2, y2 , x3 , y3);

}

protected void keyPressed(int keyCode){
int gameAction = getGameAction(keyCode);
switch(gameAction)
{
case UP:
if(y1>2&&y2>2&&y3>2)
{
repaint();
x1=gw/2 - 40;
--y1;
x2 = gw/2;
--y2;
x3 = gw/2 + 40;
--y3;
repaint();
}
break;
case DOWN:
if(y1<getHeight()&&y2<getHeight()&&y3<getHeight())
{
repaint();
++y1;
++y2;
++y3;
repaint();
}
break;
case LEFT:
if(x1>0&&x2>0&&x3>0)
{
repaint();
--x1;
--x2;
--x3;
repaint();
}
break;
case RIGHT:
if(x1<getWidth()&&x2<getWidth()&&x3<getWidth())
{
repaint();
++x1;
++x2;
++x3;
repaint();
}
break;
case FIRE:
//mMessage = "FIRE";
break;
case GAME_A:
//mMessage = "GAME_A";
break;
case GAME_B:
//mMessage = "GAME_B";
break;
case GAME_C:
//mMessage = "GAME_C";
break;
case GAME_D:
//mMessage = "GAME_D";
break;
default:
//mMessage = "NO_EXISTE";
break;
}

}

}


Y EN MI MIDDLET TENGO LO SIGUIENTE (solo tengo el objeto para acceder a la clase d arriba):

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.*;


/**
* @author Administrator
*/
public class MidletMT extends MIDlet {
public void startApp() {
CanvasMT obj = new CanvasMT();
Display.getDisplay(this).setCurrent(obj);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}