所以我有这段代码
public class MyGdxGame implements ApplicationListener {
private SpriteBatch batch;
private Texture grasstext;
private GrassField field;
@Override
public void create() {
batch = new SpriteBatch();
grasstext = new Texture(Gdx.files.internal("data/grassA.png"));
field = new GrassField();
}
@Override
public void dispose() {
batch.dispose();
grasstext.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
//DrawField(100,10,3,3,31);
//DrawField(200,50,4,2,31);
field.DrawField(10, 10, 3, 5, 31);
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
public void DrawField(int x,int y,int width,int height,int value)
{
for(int xt=0;xt<width;xt++)
{
for(int yt=0;yt<height;yt++)
{
batch.begin();
batch.draw(grasstext,((x+xt)+xt*value),((y+yt)+yt*value));
batch.end();
}
}
}
我希望能够从另一个类调用函数“DrawField”。我尝试创建一个包含与此函数相同的代码的新类,从中创建一个对象并调用该函数,但我得到一个空指针异常
答案 0 :(得分:0)
我可以猜测你做了什么,所以如果你可以输入你的新类的代码(我猜它是GrassField)会很好,但是你检查了批处理对象(SpriteBatch)和grasstext(纹理)在GrassField有售吗?据我所知,你使用的是没有任何参数的构造函数,我看不到任何包含所需引用的方法。您可以尝试使用构造函数或使用GrassField的单独方法添加所需的对象。它可能看起来像这样:
public class GrassField {
private SpriteBatch batch;
private Texture grassText;
public GrassField(SpriteBatch batch, Texture grassText) {
...
this.grassText = grassText;
this.batch = batch;
...
}
..........
}