読者です 読者をやめる 読者になる 読者になる

フニゲの開発日記

Electronとか...

Androidでツイートとかランキングとか

Android


本当はjsbindingとかplugin-xとか使うらしいのだが、正直さっぱりわからない。

いつもお世話になっているがおまるの開発ブログに、JNIを使わず簡単にjavaのコードを叩く方法が書かれているので、これを参考にして作ってみる。

cocos2d-xからツイートする[Android版:簡易編]
cocos2d-xにスコアセンターを組み込む

CCMessageBox()が呼び出すshowDialog関数を継承して改造すればいいのだな。これは簡単で美しい。

// プロジェクト作ったときに自動生成されるCocos2dxActivityを継承したクラス
public class hoge extends Cocos2dxActivity{
	
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }

    @Override
    public void showDialog(final String pTitle, final String pMessage) {
    if (pTitle.equals("command")) {
        // ここからツイートとかするわけだ
    }
    ...
}

と思ったのだが、甘かった。
javaScriptでは肝心のMessageBoxが動かない。
半日ほど悶々として、LocalStorage経由で送る方法を編み出す。

// cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxLocalStorage.java
...
public static void setItem(String key, String value) {
    ((Cocos2dxActivity)Cocos2dxActivity.getContext()).showDialog(key, value); // これを追加

    try {
        String sql = "replace into "+TABLE_NAME+"(key,value)values(?,?)";
        mDatabase.execSQL(sql, new Object[] { key, value });
    } catch (Exception e) {
        e.printStackTrace();
    }
}
....

まあ1行追加するだけなので、cocos2d-xのバージョンが上がるたびに書き足せばいいよね。

ちょっとプログラマとして道を外れている気はするが、とにかく
sys.localStorage.setItem("command", "...");
と書くだけでjavaScriptから何でも呼び出せるようになった。先を急ごう。

広告を非表示にする