首页 文章

Libgdx Null指针异常

提问于
浏览
1

我在过去的3个月里没有使用libgdx,现在我尝试制作一个简单的游戏但是当我导入libgdx jar并在我的手机(Android)上运行应用程序时,它崩溃了 . 我在网上发现ADT版本处理所有的libs . 所以我把Libgdx jar放在了libs文件夹中,但我还是应用程序崩溃了 .

logcat的:

未捕获的处理程序:由于未捕获的异常导致主要退出线程java.lang.RuntimeException:无法恢复活动{com.class.path / com.class.path.ExampleActivity}:java.lang.NullPointerException

在此之后我在android类中有10个引用(例如:在android.app.ActivityThread.main ...),而且我有这个:

引起:com.badlogic.gdx.backends.android.AndroidApplication.onResume(AndroidApplication.java:223)中的java.lang.NullPointerException

在libgdx源代码的第223行,我发现了这个:

((AndroidInput)getInput()) . registerSensorListeners();

为ExampleActivity:

公共类ExampleActivity扩展了AndroidApplication {@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
initialize(new Game(),false);
}
}

游戏:公共类游戏实现ApplicationListener {

@Override
public void create() {

}

@Override
public void dispose() {
    // TODO Auto-generated method stub

}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void render() {
}

@Override
public void resize(int arg0, int arg1) {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

}

PS:抱歉我的英语不好

1 回答

  • 0

    我碰巧遇到了这个问题 . 并使用基于ModelPreiviewApp的代码修复它

    private boolean backFaceCulling = true;
    private boolean alphaBlending = false;
    private float alphaTest = -1;
    
    
    public void setAlphaBlending(ModelInstance modelInstance, boolean alphaBlendingEnabled){
        if(modelInstance != null){
            if(alphaBlendingEnabled){
                for (Material mat : modelInstance.materials) {
                    mat.set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA));
                }
            }else{
                for (Material mat : modelInstance.materials) {
                    mat.remove(BlendingAttribute.Type);
                }
            }
        }
    }
    
    public void setAlphaTest(ModelInstance modelInstance, float alphaTestValue){
        if(modelInstance != null){
            if(alphaTestValue>=0){
                for (Material mat : modelInstance.materials) {
                    mat.set(new FloatAttribute(FloatAttribute.AlphaTest, alphaTestValue));
                }
            }else{
                for (Material mat : modelInstance.materials) {
                    mat.remove(FloatAttribute.AlphaTest);
                }
            }
        }
    }
    
    
    public void setBackFaceCulling(ModelInstance modelInstance, boolean backFaceCullinEnabled) {
    
        if (modelInstance != null) {
            if (backFaceCullinEnabled) {
                for (Material mat : modelInstance.materials) {
                    mat.remove(IntAttribute.CullFace);
                }
            } else {
                for (Material mat : modelInstance.materials) {
                    mat.set(new IntAttribute(IntAttribute.CullFace, 0));
                }
            }
        }
    }
    
    public void onModelLoaded(ModelInstance modelInstance) {
        ...
        setBackFaceCulling(modelInstance, true);
        setAlphaBlending(modelInstance, false);
        setAlphaTest(modelInstance, -1);
    }
    

相关问题