libgdxがandroidプラットフォームのコンテンツを呼び出す方法

1667 ワード

libgdxを使うのはもうしばらく経ちました.最近、libgdxでandroidの内容を呼び出す方法を聞かれる友达がよくいます.
通常libgdxはプラットフォームにまたがっており、gdxのコードは他のプラットフォームの関連コードを許可していないが、実際に使用すると他のプラットフォームの内容を呼び出す需要があることが多い.実はこれも簡単で、javaのイベントメカニズムを利用して簡単に実現でき、以下に関連コードを貼り付ける.
1:BsuEventは、メッセージ通知および応答メッセージの後に実行するいくつかの動作を実現するための虚クラスである.
public abstract class BsuEvent {
	public abstract void notify(Object obj,String msg);
}
2:libgdxプライマリクラスコード、コンストラクション関数には、beventに割り当てられたBsuEventオブジェクトが含まれています.その後、androidのコンテンツをいつ呼び出すか、beventのnotifyメソッドを実行し、実行メッセージ文字列を持ち込むとよいでしょう.
public class BsuGame extends Game {
	public BsuEvent bevent = null;		//    desktop android           
	
	public BsuGame(BsuEvent be){
		bevent = be;
		bevent.notify(this, "test");
	}
	@Override
	public void create() {
	}

	@Override
	public void dispose() {
		super.dispose();
	}
}
3:ここではandroidクライアントのメインクラスです.BsuGameコンストラクション関数で匿名の内部クラスBsuEventインスタンスが実装され、その虚メソッドnotify.notifyで呼び出すandroidコンテンツが上書きされています.android環境であるため、androidコンテンツToastを好きなように呼び出して、フローティングメッセージを表示する機能を実現することができます.
public class MainActivity extends AndroidApplication {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = true; 
        
        initialize(new BsuGame(new BsuEvent(){
			@Override
			public void notify(Object obj, String msg) {
				Toast.makeText(MainActivity.this, "libgdx    ", Toast.LENGTH_SHORT).show();
			}
        }), cfg); 
    }
}
初心者の参考にするだけで、達人はレンガを撮りに来ないでください.