📄 translatemidlet.java.svn-base
字号:
package opusmicro.demos.canvas;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
public class TranslateMIDlet extends MIDlet {
private Display display; // The display
private TranslateCanvas canvas; // Canvas
public TranslateMIDlet() {
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 TranslateMIDlet
*
* Draw image using translated coordinates
*-------------------------------------------------*/
class TranslateCanvas extends Canvas implements CommandListener {
private Command cmExit; // Exit midlet
private TranslateMIDlet midlet;
private Image im = null;
private int translatex = 0, translatey = 0;
public TranslateCanvas(TranslateMIDlet 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("/welcome.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());
// TranslateMIDlet coordinates
g.translate(translatex, translatey);
// Always draw at 0,0
System.out.println("translatey= "+translatey);
System.out.println("g.getTranslateX()="+g.getTranslateX()+" g.getTranslateY()="+g.getTranslateY());
System.out.println("g.getClipX()= "+ g.getClipX()+" g.getClipY()= "+ g.getClipY());
g.setClip(g.getClipX()+g.getTranslateX(), g.getClipY()+g.getTranslateY(), im.getWidth(), im.getHeight());
g.drawImage(im, 0, 0, Graphics.LEFT | Graphics.TOP);
System.out.println("2 g.getClipX()= "+ g.getClipX()+" g.getClipY()= "+ g.getClipY());
g.setClip(0, 0, 240, 291);
}
}
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();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -