Cocos2d-x と pd-for-android その4

前回の課題、pd から送られてくるクリック(metro を利用したテンポ情報)に同期させて、cocos2d-x 側でスプライトをアニメーションさせるってヤツに取り組んでいたのですが、思いのほか手間取る。

前回は、
cocos2d-x(タッチイベント) -> java -> pd-for-android(発音)
をクリアしたので、

今回は、
pd-for-android(metroのクリック) -> java -> cocos2d-x(スプライトのアニメーション)
に挑戦中。

一応、色々な解説サイト様を参考にコンパイル・エラーは出なくなったものの、アプリを実行すると、そんなネイティブ・メソッドないよーと言われて終~了~を幾度と無く繰り返す。

こちら様の最後の回答のやり方 で回避できました。

AppActivity.java

protected void onCreate(Budle savesInstanceState){
(略)
}
public static native void methodName(arg1, arg2, ・・・・);
(略)

dispatcher = new PdUiDispatcher();
PdBase.setReceiver(dispatcher);

dispatcher.addListener("senderName", new PdListener.Adpter(){
    @Override
    public void receiveFloat(String source, final float x){
        methodName(arg1, arg2, ・・・・・);
    }
});



HelloWorldScene.cpp

void Java_org_cocos2dx_cpp_AppActivity_methodName(JNIEnv* env, jobject thiz, jstring arge1, jfloat arg2, ・・・・){

    const char* str = env->GetStringUTFChars(arg1, 0);
    (等、必要な処理の記述)

}



HelloWorldScene.h

class HelloWorld : public cocos2d::Layer{
(略)
};
extern "C"{
    void Java_org_cocos2dx_cpp_AppActivity_methodName(JNIEnv* env, jobject thiz, jstring arg1, jfloat arg2, ・・・・);
}



汎用性を持たさせたるために、java 側から、Pd のセンダー名と送られてきた値を引数として取って、cocos2d-x 側の関数で処理を振り分けるようにしたかったのですが、これが良く分からず。

こちら様の javaからcocos2d-xにコマンドを送る のHelloWorldScene.h 、 HelloWprldScene.cpp を参考に、sharedScene を使うことで、なんとか関数を呼び出すことが出来ました。

しかし、良く理解してないままなので、今後どういう影響がでるかは未知数。

またしても、問題を先送りするのであった。

スポンサーサイト

コメント

非公開コメント