⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 40cda1594999001b138cd89f505b592c

📁 《J2ME实用教程》 源文件下载 本书没有仅仅局限于J2ME单机游戏的开发
💻
字号:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class ImageDemo extends Canvas
implements Runnable,CommandListener
{
Command start = new Command("开始",Command.OK,1) ;
Command stop = new Command("停止",Command.STOP,1) ;
private Image offscreen ;
public ImageDemo)
{
addCommand(start);
setCommandListener(this) ;
if(isDoubleBuffered())
{
System.out.println("支持双缓冲区");
}else
{
System.out.println("不支持双缓冲区,启动自制双缓冲区");
offscreen = Image.createImage(getWidth(),getHeight());
}
}
public void paint(Graphics g)
{
if(isDoubleBuffered())
{
System.out.println("On-Screen 绘图");
clear(g);
paintAnimation(g,100,10,r) ;
paintCross(g,x,y,length) ;

}else
{
System.out.println("Off-Screen 绘图");
Graphics offg = offscreen.getGraphics() ;
clear(offg) ;
paintAnimation(offg,100,10,r) ;
paintCross(offg,x,y,length) ;
g.drawImage(offscreen,0,0,0);
}
}
public void clear(Graphics g)
{
//把屏幕清成白色
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
}
int r = 0 ;
public void paintAnimation(Graphics g,int x,int y,int l)
{
g.setColor(0,0,0);
g.drawRect(x,y,l,l);
}
int x =50 ;
int y =50 ;
int length = 5 ;
public void paintCross(Graphics g,int x,int y,int length)
{
g.setColor(255,0,0);
g.drawLine(x-length,y,x+length,y);
g.drawLine(x,y-length,x,y+length);
}
boolean conti = false ;
public void commandAction(Command c,Displayable s)
{
String cmd = c.getLabel() ;
if(cmd.equals("停止"))
{
conti = false ;
removeCommand(stop);
addCommand(start) ;
}else if(cmd.equals("开始"))
{
removeCommand(start);
addCommand(stop) ;
conti = true ;
Thread t = new Thread(this);
t.start();
}
}
int rate = 50 ; //每1/20 秒画一次
public void run()
{
long s = 0 ;
long e = 0 ;
long diff = 0 ;
while(conti)
{
s = System.currentTimeMillis() ;
r++;
if (r > 10)
r = 0;
repaint();
serviceRepaints() ;
e = System.currentTimeMillis() ;
diff = e-s ;
if(diff<rate)
{
try
{
Thread.sleep(rate-diff);
}catch(Exception exc){}
}
}
}
protected void keyPressed(int keycode)
{
switch(getGameAction(keycode))
{
case Canvas.UP :
y = y-2 ;
break ;
case Canvas.DOWN :
y = y+2 ;
break ;
case Canvas.LEFT :
x = x-2 ;
break ;
case Canvas.RIGHT :
x = x+2 ;
break ;
}
repaint();
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -