Canvas em WTK

Por Favor, alguém pode me ajudar???

Preciso fazer um efeito sinuca usando canvas, assim: colocar dois circulos na tela, um em movimento e outro parado, quando o que está em movimento tocar o que estiver parado, o que estava parado inicia um movimento e o que estava em movimento pára.Para isso utilizei 3 arquivos:Circulo.java, ex.java e MCanvas.java.Consegui fazer um círculo tocar no outro e parar, mas não consegui fazer o que estava parado entrar em movimento. Defini um método “mover” que somente determina o movimento do primeiro circulo, mas não consigo implementar dentro do mesmo método um código que faça o segundo circulo que estava parado se movimentar.
O que devo fazer??será que posso implementar um outro código dentro do mesmo método “mover” para um outro circulo diferente???

HELP!!!PLEASE!!! :frowning: :cry:

kara…ateh quero te ajudar…mas naum entendi nada do que vc falou, achu que eh o sono…4:30 da manhã…hehe

posta o código ai pra gnt dar uma olhada, ajuda!!!

Flw!!

Poxa, se puder me ajudar eu agradeceria muito…estou quebrando a cabeça p conseguir fazer isso, e de repente a solução é até simples, mas não t conseguindo vizualizar!!!

aí vai o código dos 3 arquivos java salvos no SRC de um projeto que abri no WTK.

O primeiro é o ex.java, que não sofre alterações no código, para qq programinha de canvas ele seria basicamente o mesmo , sem alterações.

import javax.microedition.lcdui.;
import javax.microedition.midlet.
; :wink: :wink:

public class ex extends MIDlet implements CommandListener
{
private Display tela;
private MCanvas canvas;
private Command sair;

public void startApp()
{
tela = Display.getDisplay(this);
canvas = new MCanvas();
sair = new Command(“sair”, Command.EXIT, 1);
canvas.addCommand(sair);
canvas.setCommandListener(this);
tela.setCurrent(canvas);
}

public void pauseApp()
{
}

public void destroyApp(boolean unconditional)
{
}

public void commandAction(Command comando, Displayable displayable)
{
destroyApp(false);
notifyDestroyed();
}
}

Este é o Circulo.java, onde tem o método ‘mover’ que é quem determina qual será o movimento do círculo e onde ele deve parar.

public class Circulo
{
private int x, y, a, b;
private boolean aux = true;

public void setX(int x)
{
this.x = x;
}

public void setY(int y)
{
this.y = y;
}

public int getX()
{
return x;
}

public int getY()
{
return y;
}

public void mover(int tela)
{
int x = 140;
if (y <= tela && aux == true ) {

y++;
if (y == x) {
	aux = false;
                             
                             
                                
}

}
else
{
b–;
if (a == b) {
aux = true;
}
}

}

}

E este é o MCanvas.java

import javax.microedition.lcdui.;
import javax.microedition.midlet.
;
import java.util.*;

public class MCanvas extends Canvas
{
private Timer relogio;
private TimerTask tarefa;
private Circulo[] q;
private int x, y, a, b;

public MCanvas()
{
x = 0;
y = 0;
a = 100;
b = 140;

q = new Circulo[1];

for (int i=0; i<1; i++)
{
q[i] = new Circulo();
q[i].setX(i*50 + 110); //o segundo numero de dentro do parenteses determina a posição horizontal da bolinha
q[i].setY(10); // O número entre parenteses determina onde a bolinha terá o inicio de seu movimento no campo vertical.
}
}

public void paint(Graphics g)
{
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());

g.setColor(255, 0, 0);
g.fillArc(a, b, 20, 20, 0, 360);//define o circulo vermelho que está parado no centro da tela

synchronized(this) //Delimita uma região de execução em paralelo, parecido com o try. Para sincronizar o relógio.
{
g.setColor(0,0,255);

for(int i=0; i<1; i++)
{

g.fillArc(q[i].getX(), q[i].getY(), 20, 20, 0, 360);

}
}
}

public void showNotify()
{
relogio = new Timer();

tarefa = new TimerTask()

{
public void run() // Cérebro da animação, define a animação
{

for(int i=0; i<1; i++)
{

q[i].mover(getHeight());//Chama o método para mover o circulo
                repaint();

}

}
};

long intervalo = 1000/260; //Define a velocidade, para aumentar a velocidade aumenta o denominador
relogio.schedule(tarefa, intervalo, intervalo); //tarefa (tarefa que será executada, três quadrados se movimentando), 1º intervalo (tempo de execução),

2º intervalo (fatia para cada execução)
// Método que executa os quadrados
}

public void hideNotify()
{
relogio.cancel();
}
}

Na Verdade issso é algoritmo puro, mas o problema é justamente esse, algoritmo!!!