J2ME+NOKIA7210学习笔记(二)诡异的飞猴

工程名:ok3

目的:让一只猴子脸在屏幕上来回跑,如果跑到屏幕边上则从对称的坐标位置继续跑,这样便可以看到持续的动画。目前的问题是:如果导入两张图片,则在JB里报“cannot read”第二张图片,但是第一张没报;在模拟器运行时报“java.sun.NullPointerException”的异常,目前暂无解决的迹象。代码如下:

 // ok3.java 

package ok3;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
 
public class ok3 extends MIDlet {
 
 private Canvas canvas;
 private Display display;
 
 public void startApp() throws MIDletStateChangeException {
    display = Display.getDisplay(this);
    canvas = new ok3Displayable();
    display.setCurrent(canvas);
 }
 public void pauseApp() {}
 public void destroyApp(boolean bool) throws MIDletStateChangeException {
 }
}
 
 
// ok3Displayable.java
 
package ok3;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.*;
 
public class ok3Displayable extends Canvas implements Runnable{
 
 private Image monkey;
   private int x = 20;  // x 坐标
 private int y = 120;  // y 坐标
 
 public ok3Displayable(){
 try {
   monkey = Image.createImage("/ohyeah.png");
   }
 catch(IOException e) {e.printStackTrace();}
 
 Thread th = new Thread(this);  // 制作新线程  
 th.start();  // 开始线程
 }
 protected void paint(Graphics g) {
    g.setColor(225, 255, 255);   // 白色
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(0, 0, 0);    // 黑色
    g.drawString("Monkey moving!",10,20,0);
   
    g.drawImage(monkey,x,y, Graphics.HCENTER | Graphics.VCENTER );
   }
 public void run() {
     while (true){
       y++;
       x-=2;
       if(x < 0)x = getWidth();
       if(y > getHeight()) y = 0;
       repaint();
       try{ 
       Thread.sleep(100);   //100毫秒待机 
       }catch(InterruptedException e){}
     }
 }
}
========================================
2006年5月3日
今天晚上再重新运行一遍竟然就成功了,什么都没改,还真他娘不知道怎么回事……
看造化了。
下面是调整后的代码:
==========
ok3.java
==========
package ok3;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class ok3 extends MIDlet {
  private Canvas canvas;
  private Display display;
  public void startApp() throws MIDletStateChangeException  {
    display = Display.getDisplay(this);
    canvas = new ok3Displayable();
    display.setCurrent(canvas);
  }
  public void pauseApp() {}
  public void destroyApp(boolean bool) throws MIDletStateChangeException {
  }
}
=====================
ok3Displayable.java
=====================
package ok3;
import javax.microedition.lcdui.*;
import java.io.*;
public class ok3Displayable extends Canvas implements Runnable{
 private Image[] monkey;
 private int x = 20;//x坐标
 private int y = 120;//y坐标
 public ok3Displayable(){
  try {
   monkey = new Image[2];
   monkey[0] = Image.createImage("/ohyeah.png");
   monkey[1] = Image.createImage("/back.png");
   }
  catch(IOException e) {e.printStackTrace();}
  Thread th = new Thread(this);//制作新线程
  th.start();//开始线程
 }
 protected void paint(Graphics g) {
    g.setColor(225, 255, 255);  // red
    g.fillRect(0, 0, getWidth(), getHeight());
    g.drawImage(monkey[1],0,0, Graphics.LEFT | Graphics.TOP );
    g.drawImage(monkey[0],x,y, Graphics.HCENTER | Graphics.VCENTER );
   }
 public void run() {
     while (true){
       y++;
       x-=2;
       if(x < 0)x = getWidth();
       if(y > getHeight()) y = 0;
       repaint();
       try{
       Thread.sleep(100);//100毫秒待机
       }catch(InterruptedException e){}
     }
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值