private translatecanvas canvas; // canvas
public translate()
{
display = display.getdisplay(this);
canvas = new translatecanvas(this);
}
protected void startapp()
{
display.setcurrent( canvas );
}
protected void pauseapp()
{ }
protected void destroyapp( boolean unconditional )
{ }
public void exitmidlet()
{
destroyapp(true);
notifydestroyed();
}
}
/*————————————————–
* class translate
*
* draw image using translated coordinates
*————————————————-*/
class translatecanvas extends canvas implements commandlistener
{
private command cmexit; // exit midlet
private translate midlet;
private image im = null;
private int translatex = 0, translatey = 0;
public translatecanvas(translate midlet)
{
this.midlet = midlet;
// create exit command & listen for events
cmexit = new command("exit", command.exit, 1);
addcommand(cmexit);
setcommandlistener(this);
try
{
// create immutable image
im = image.createimage("/bolt.png");
}
catch (java.io.ioexception e)
{
system.err.println("unable to locate or read .png file");
}
}
protected void paint(graphics g)
{
if (im != null)
{
// clear the background
g.setcolor(255, 255, 255);
g.fillrect(0, 0, getwidth(), getheight());
// translate coordinates
g.translate(translatex, translatey);
// always draw at 0,0
g.drawimage(im, 0, 0, graphics.left | graphics.top);
}
}
public void commandaction(command c, displayable d)
{
if (c == cmexit)
midlet.exitmidlet();
}
protected void keypressed(int keycode)
{
switch (getgameaction(keycode))
{
case up:
// if scrolling off the top, roll around to bottom
if (translatey – im.getheight() < 0)
translatey = getheight() – im.getheight();
else
translatey -= im.getheight();
break;
case down:
// if scrolling off the bottom, roll around to top
if ((translatey + im.getheight() + im.getheight()) > getheight())
translatey = 0;
else
translatey += im.getheight();
break;
case left:
// if scrolling off the left, bring around to right
if (translatex – im.getwidth() < 0)
translatex = getwidth() – im.getwidth();
else
translatex -= im.getwidth();
break;
case right:
// if scrolling off the right, bring around to left
if ((translatex + im.getwidth() + translatex) > getwidth())
translatex = 0;
else
translatex += im.getwidth();
break;
}
repaint();
}
}