我想用libGDX(其他信息:Eclipse,Windows 8)使用Texturepacker产生一个简单的18帧动画。Texturepacker/LibGDX动画 - 渲染错误
我得到以下logcat的错误,再加上我的Android试验装置在黑色屏幕:
02-20 09:26:15.229: E/AndroidRuntime(23444): FATAL EXCEPTION: GLThread
02-20 09:26:15.229: E/AndroidRuntime(23444): java.lang.NullPointerException
02-20 09:26:15.229: E/AndroidRuntime(23444): at com.tester.test.TestGameClass.render(TestGameClass.java:71)
02-20 09:26:15.229: E/AndroidRuntime(23444): at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:499)
02-20 09:26:15.229: E/AndroidRuntime(23444): at com.badlogic.gdx.backends.android.surfaceview.GLSurfaceViewCupcake$GLThread.guardedRun(GLSurfaceViewCupcake.java:713)
02-20 09:26:15.229: E/AndroidRuntime(23444): at com.badlogic.gdx.backends.android.surfaceview.GLSurfaceViewCupcake$GLThread.run(GLSurfaceViewCupcake.java:646)
的logcat的错误似乎指向我的游戏类的渲染部分:
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.utils.Array;
public class TestGameClass implements ApplicationListener {
AssetManager manager = new AssetManager();
Texture grey_background;
Texture tell_arrow;
Texture test_anni_1;
Music test_intro;
Music test_play;
Sound menu_select;
OrthographicCamera camera;
SpriteBatch batch;
TextureAtlas spriteSheet;
private Array<Sprite> test;
private int currentFrame;
private float frameLength;
private float animationElapsed;
@Override
public void create() {
Texture.setEnforcePotImages(false);
grey_background = new Texture(Gdx.files.internal("grey_background.png"));
tell_arrow = new Texture(Gdx.files.internal("tell_arrow.png"));
test_intro = Gdx.audio.newMusic(Gdx.files.internal("test_intro.mp3"));
test_play = Gdx.audio.newMusic(Gdx.files.internal("test_play.mp3"));
menu_select = Gdx.audio.newSound(Gdx.files.internal("menu_select.wav"));
test_intro.setLooping(true);
test_intro.play();
camera = new OrthographicCamera();
camera.setToOrtho(false, 480, 640);
spriteSheet = new TextureAtlas(Gdx.files.internal("spritesheet.txt"));
test = spriteSheet.createSprites("test");
for(int i=0; i<test.size; i++){
test.get(i).setSize(3.0f, 3.0f);
}
float dt = Gdx.graphics.getDeltaTime();
animationElapsed += dt;
while(animationElapsed > frameLength){
animationElapsed -= frameLength;
currentFrame = (currentFrame == test.size - 1) ? 0 : ++currentFrame;
}
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
batch.begin();
test.get(currentFrame).draw(batch);
batch.end();
}
public void resize (int width, int height) {
}
public void pause() {
}
public void resume() {
}
public void dispose() {
grey_background.dispose();
menu_select.dispose();
test_intro.dispose();
test_play.dispose();
tell_arrow.dispose();
batch.dispose();
}
}
我Texturepacker PNG图像和文本文件是指每个测试帧为Test1,TEST2,TEST3等
我以前获得该指着线assoc命令错误使用OpenGL,单独使用与相机设置相关的线。我似乎已经解决了他们,但也许这是相关的?
谢谢。
错误指向第71行,并解释您有一个空指针。应该相当容易找出,但如果你需要额外的帮助,你可以考虑共享哪条线实际上是71 ...疯狂猜测; test为null或test.get(..)返回null。 –
Hi Marius,第71行指向batch.begin(); – jdubbing