Ich war gestern Abend in Fahrt, als ich auf das Thema ButtonSprite stieß. Ich hätte schwören können, dass ich das schon einmal gemacht habe - es scheint so einfach zu sein - aber die Verwendung des Codes, den AndEngineExamples zur Verfügung stellt, macht nicht wirklich Sinn und führt zu Fehlern (zum Beispiel - warum erstellt eine vage "run()"-Methode die Antwort auf jedes einzelne Touch-Ereignis?)
Also habe ich etwas getan, was mir sinnvoll erschien.
private void loadScenes()
{
mainScene = new Scene();
menu = new Sprite(0, 0, menuTextureRegion, mEngine.getVertexBufferObjectManager()){
@Override
protected void preDraw(GLState pGLState, Camera pCamera)
{
super.preDraw(pGLState, pCamera);
pGLState.enableDither();
}
};
newgamebutton = new ButtonSprite(25, 200, newgameTextureRegion, mEngine.getVertexBufferObjectManager());
multiplayerbutton = new ButtonSprite(25, 310, multiplayerTextureRegion, mEngine.getVertexBufferObjectManager());
menu.setScale(1.65f);
menu.setPosition((CAMERA_WIDTH - menu.getWidth()) * 0.5f, (CAMERA_HEIGHT - menu.getHeight()) * 0.5f);
mainScene.attachChild(menu);
mainScene.attachChild(newgamebutton);
mainScene.attachChild(multiplayerbutton);
mainScene.registerTouchArea(multiplayerbutton);
mainScene.setTouchAreaBindingOnActionDownEnabled(true);
multiplayerbutton.onAreaTouched(mButtonTouched, multiplayerbutton.getWidth(), multiplayerbutton.getHeight());
if(mButtonTouched.isActionDown()) {
mainScene.detachChild(menu);
mainScene.detachChild(multiplayerbutton);
}
}
Das scheint sehr sinnvoll zu sein. Wenn der "Multiplayer-Button" gedrückt wird, erhält man den mButtonTouched, und wenn dieser gedrückt wird, werden das Menü und der Multiplayer-Button getrennt. Dies ist offensichtlich nur ich Dinge zu testen, und nicht Teil eines tatsächlichen Projekts, weil ich gerade lernen, aber ich bekomme eine Null-Zeiger-Ausnahme und die app rechts schließt vor der Anzeige der "Menü-Szene", die offensichtlich normalerweise funktioniert. Auch auf verschiedenen Seiten heißt es, dass ich "public boolean" vor multiplayerbutton setzen sollte, aber Eclipse wird nicht haben, dass.
Ich bin sicher, ihr habt das schon herausgefunden, aber ich bin suuuuuuper neu in AndEngine. Danke für jede Hilfe, Leute!