Cocos2d-x 3.11 の MessageBox が・・・。


Eclipse + ADT & Cocos2d-x 3.06 で作ったプロジェクトを Android Studio に移行していたのですが、ついでだからと Cocos2d-x を 3.11 に上げたら、MessageBox の表示が変わっているような???

なぜか2行までしかテキストを表示しないんですけど、これって、元からだったかなぁ?

複数行にわたってコピーライト表記してるので、マズイんですよねぇ。
JNI で Java で表示するかー。面倒だから、 MessageBox 使ったんだけどなぁ。

Cocos2d-x のダイアログ非対応は、結構、ネット検索してもヒットするんだけど、対応する方向じゃなくて、無くす方向に進んでいるのかしらねぇ。

【追記】

悩んでいてもしょうがいないので、やってみた。MessageBox を アラート・ダイアログに置き換えただけ。
.h は省略。

Main.cpp

void Main::AlertDialog(const char* title, const char* msg){
    InterfaceJNI::funcAlertDialog(title, msg);
}



InterfaceJNI.cpp

void InterfaceJNI::funcAlertDialog(const char* title, const char* msg){
    JniMethodInfo t;
    if(JniHelper::getStaticMethodInfo(t, CLASS_NAME, "funcAlertDialog", "(Ljava/lang/String;Ljava/lang/String;)V")){

        jstring stringArg1 = t.env->NewStringUTF(title);
        jstring stringArg2 = t.env->NewStringUTF(msg);

        t.env->CallStaticVoidMethod(t.classID, t.methodID, stringArg1, stringArg2);
        t.env->DeleteLocalRef(stringArg1);
        t.env->DeleteLocalRef(stringArg2);
        t.env->DeleteLocalRef(t.classID);
    }



AppActivity.java

public static void funcAlertDialog(final String title, final String msg){

    Cocos2dxHelper.getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
        new AlertDialog.Builder(getContext())
            .setTitle(title)
            .setMessage(msg)
            .setPositiveButton("OK", null)
            .show();
        }
    });
}



意外に、AppActivity 側でハマった。

runOnUiThread を使わなきゃいけないところと、引数を渡すのに final を使うところ。
って、基本じゃねーか。

拡張すれば、アラート・ダイアログのボタンを押したときのコールバックなんかも作れるかも知れませんね。
やらないけど。


【追記その2】

あ、もしかしたら、MessageBox のテキスト順序が変わったのかも知れない。

以前は、
MessageBox("表示したい内容", "タイトル");

だったけど、
MessageBox("タイトル", "表示したい内容");

という、真っ当(?)な順序になったのか? そういや、タイトルが下に来てたなぁ。

確認してみたらビンゴでした。
返して! ワタシの今日1日を返して!

スポンサーサイト

コメント

非公開コメント