分虽然不多,但就这些了,希望大家共同进步
遇到了这样一个情况
public class Eatsnake
{
Snake snake;
control con;
....
public Eatsnake()
{
snake=new Snake(this,30,30);
Thread th=new Thread(snake);
con=new control(snake);
th.start();
}
}
在control类的构造函数中要从E盘读取一个文件显示在该面板上,如果我像上面的那样写就可以正常读取显示,但我改成下面这两种写法就不能读取并显示了,为什么呢?两几种写法有什么区别么?
public class Eatsnake
{
Snake snake;
control con;
....
public Eatsnake()
{
snake=new Snake(this,30,30);
Thread th=new Thread(snake);
con=new control(snake);
begin();
}
public void begin()
{
th.start();
}
}
或是这样也不能读取
public class Eatsnake
{
Snake snake=null;
control con;
....
public Eatsnake()
{
con=new control(snake);
begin();
}
public void begin()
{
snake=new Snake(this,30,30);
Thread th=new Thread(snake);
th.start();
}
}
如果大家愿意看就看一下我写的恶心的代码,写的很恶心,是一个贪食蛇的小游戏
------解决方案--------------------第一段:th是局部变量,不能在begin()中访问,需要把Thread th=new Thread(snake);放到成员变量里
第二段:con=new control(snake);此时snake是null。con=new control(snake);begin();两句互换一下位置即可