0

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 を実装しましたが、違いはありません (そして違いもありませんでした)。アイデアはありますか?

4

0 に答える 0