2012-06-23 3 views
1

Я не работал с libgdx последние 3 месяца, и теперь я попытался создать простую игру, но когда я импортировал баночки libgdx и запустил приложение на своем мобильном телефоне (Android), он разбился. Я нашел в сети, что версия ADT обрабатывает все библиотеки. Поэтому я поместил баннеры Libgdx в папку libs, но все равно приложение вылетает.Libgdx Null Pointer Exception

LogCat:

Uncaught обработчик: нить главного выхода из-за неперехваченное исключением

java.lang.RuntimeException: Невозможно возобновить деятельность {com.class.path/com.class.path. ExampleActivity}: java.lang.NullPointerException

после этого у меня есть 10 ссылок на андроид классов (например: на android.app.ActivityThread.main ...), и чем я есть это:

Вызванный: java.lang.NullPointerException на com.badlogic.gdx.backends.android.AndroidApplication.onResume (AndroidApplication.java:223)

В строке 223 в источнике libgdx я Вы нашли это:

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

ExampleActivity:

общественного класса ExampleActivity расширяет AndroidApplication {

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    initialize(new Game(), false); 
} 

}

игры: общественный класс Game реализует 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: Извините за мой плохой английский

+0

добавить свой LogCat код или действующих –

+0

вы видите несколько исключений? Его нечетность для libGDX для отказа в onResume, если onCreate завершена успешно. Я иногда видел ошибки в onResume, если onCreate терпит неудачу уродливым способом, поэтому проверьте, не выкидываются ли другие исключения? –

+0

Странно, не знаю, как AndroidInput будет null в этот момент. –

ответ

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); 
}