Android で実行されている単純な libgdx プロジェクトを取得しようとしています。すべて問題ありませんが、InputProcessor がイベントを発生させません。このチュートリアルに従ってすべてを実装しました: http://code.google.com/p/libgdx-users/wiki/IntegratingAndroidNativeUiElements3TierProjectSetup#Code_Example
「showToast」の最初の呼び出しは正常に機能し、画面に表示されます => showToast-Method は機能します。残念ながら、InputProcessor イベントを発生させることはできません。デバッガーでさえそこで止まらないので、それらは絶対に呼び出されません。
編集:これが完全なコードです。Calculator クラスは正常に動作し、ここでは問題にならないため、省略しました。もちろん、誰かがそれに同意しない場合は、いつでも追加できます。
libgdx メイン プロジェクトの Surface クラス (いわばメイン クラス)
public class Surface implements ApplicationListener {
ActionResolver actionResolver;
SpriteBatch spriteBatch;
Texture texture;
Calculator calculator;
public Surface(ActionResolver actionResolver) {
this.actionResolver = actionResolver;
}
@Override
public void create() {
spriteBatch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("ship.png"));
calculator = new Calculator(texture);
actionResolver.showToast("Tap screen to open Activity");
Gdx.input.setInputProcessor(new InputProcessor() {
@Override
public boolean touchDown(int x, int y, int pointer, int button) {
actionResolver.showToast("touchDown");
actionResolver.showMyList();
return true;
}
// overriding all other interface-methods the same way
});
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
calculator.update();
spriteBatch.begin();
calculator.draw(spriteBatch);
spriteBatch.end();
}
// Overriding resize, pause, resume, dispose without functionality
}
libgdx メイン プロジェクトの ActionResolver インターフェイス
public interface ActionResolver {
public void showMyList();
public void showToast(String toastMessage);
}
Android プロジェクト内での ActionResolver インターフェースの実装
public class ActionResolverImpl implements ActionResolver {
Handler uiThread;
Context appContext;
public ActionResolverImpl(Context appContext) {
uiThread = new Handler();
this.appContext = appContext;
}
@Override
public void showMyList() {
appContext.startActivity(new Intent(this.appContext, MyListActivity.class));
}
@Override
public void showToast(final String toastMessage) {
uiThread.post(new Runnable() {
@Override
public void run() {
Toast.makeText(appContext, toastMessage, Toast.LENGTH_SHORT).show();
}
});
}
}
Suface-Class を初期化するための Android アクティビティ
public class AndroidActivity extends AndroidApplication {
ActionResolverImpl actionResolver;
@Override
public void onCreate(android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionResolver = new ActionResolverImpl(this);
initialize(new Surface(actionResolver), false);
}
}
また、Surface クラスに InputProcessor を実装しましたが、違いはありません (そして違いもありませんでした)。アイデアはありますか?