codice:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.*;
import java.lang.Math.*;
public class Esempio extends MIDlet
{
private Display display;
private AnimationCanvas canvas;
private Timer tm;
private AnimateTimerTask tt;
public Esempio()
{
display = Display.getDisplay(this);
canvas = new AnimationCanvas(this);
tm = new Timer();
tt = new AnimateTimerTask(canvas);
tm.schedule(tt, 0, 100);
}
public void startApp()
{
display.setCurrent(canvas);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional)
{}
}
class AnimateTimerTask extends TimerTask
{
private AnimationCanvas canvas;
public AnimateTimerTask(AnimationCanvas canvas)
{
this.canvas = canvas;
}
public final void run()
{
canvas.x_loc ++;
//canvas.y_loc = ;
canvas.repaint();
}
}
class AnimationCanvas extends Canvas implements CommandListener
{
private Esempio midlet;
private Command cmExit;
private int keyFire,
private Random random;
int x_loc,
y_loc,
radius,
w,
h,
red,
green,
blue;
public AnimationCanvas(Esempio midlet)
{
this.midlet = midlet;
random = new java.util.Random();
radius = 8;
w = getWidth();
h = getHeight();
x_loc = 0;
y_loc = h-radius;
init();
cmExit = new Command("Exit", Command.EXIT, 1);
keyFire = getKeyCode(FIRE);
keyRight = getKeyCode(RIGHT);
keyLeft = getKeyCode(LEFT);
addCommand(cmExit);
setCommandListener(this);
}
protected void paint(Graphics g)
{
double app;
g.setColor(0xffffff);
g.fillRect(0, 0, w, h);
g.setColor(0x000000);
for (int x = 0; x < w; x += 10)
{
g.drawLine(0, w - x, x, 0);
}
for (int x = 0; x < w; x += 5)
{
g.drawLine(x, h, w, h - x);
}
app=(double)x_loc;
app=Math.sqrt(57600-(app*app))+51;
System.out.println("app:"+app);
System.out.println("app:"+app);
y_loc = (int)app;
System.out.println(w+" "+h+" "+ x_loc+" "+y_loc);
g.setColor(red, green, blue);
g.fillArc( x_loc, y_loc, radius, radius, 0, 360);
}
private void init()
{
x_loc = 1;
y_loc = h-radius;
changeColor();
}
protected void changeColor()
{
red = (random.nextInt() >>> 1) % 256;
green = (random.nextInt() >>> 1) % 256;
blue = (random.nextInt() >>> 1) % 256;
System.out.println(red +" "+green+" "+blue);
}
public void commandAction(Command c, Displayable d)
{
if (c == cmExit)
midlet.destroyApp(true);
}
protected void keyPressed(int keyCode)
{
if (keyCode == keyFire)
init();
}
}
chiedo scusa per l'indentazione ma era solo una bozza...