日期:2014-05-20  浏览次数:20797 次

Uncaught exception java/lang/NullPointerException.异常原因
Uncaught exception java/lang/NullPointerException.
这个异常我实在不清楚是什么原因,有哪位愿意告诉我么?所写代码是手机RPG游戏中玩家与NPC的对白,但是不懂哪儿有问题,对白不能按OK键逐条进行,还出现了以上说的异常错误,对话框闪得厉害。
发生异常的代码是两个方法里的:
public void drawDlg(Graphics g){//画对话框,并进行换行处理
g.setColor(0xffffff);
Image imgDlg = null;
try {
imgDlg = Image.createImage("/talk.png");
} catch (Exception e) {
e.printStackTrace();

}
g.drawImage(imgDlg,0,256,0);
for(int i=0;i<dlgStr[sn].length()/dlgn+1;i++)//按每行19个字进行分行
{
if(i==dlgStr[sn].length()/dlgn)
g.drawString(dlgStr[sn].substring(i*dlgn),scrWidth/2-imgDlg.getWidth()/2+8,scrHeight-imgDlg.getHeight()/2
+2+i*20,0);
else
g.drawString(dlgStr[sn].substring(i*dlgn,i*dlgn+dlgn),scrWidth/2-imgDlg.getWidth()/2+8,scrHeight
-imgDlg.getHeight()/2+2+i*20,0);
}
}
public void paint(Graphics g) {
if (talkable) {
drawDlg(g);
if(sn+1<dlgStr.length)
{
int keystate = getKeyStates();
if((keystate &FIRE_PRESSED)!=0){//按下OK键,重绘下一条对白

flushGraphics();
drawDlg(g);
// talkable=true;
repaint();
sn=sn+1;//对白编号加1
flushGraphics();
}
}
else
{
talkable=false;
loadMap(MapType.DESERT0);//载入下一张地图
}
}
}

------解决方案--------------------
paint()方法写得很“另类”
------解决方案--------------------
空指针异常是最好找的,异常里会给出具体是哪一行,找一下就知道了,你给个代码,谁知道错在哪一行?
------解决方案--------------------
是个空指针异常,看你哪个声明了,没有 new 啊,