android使用注意:
1:需要在OnCreate中调用
PluginWrapper.init(this);
PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance());
保存游戏activity
2:在jni的JNI_OnLoad函数中调用
PluginJniHelper::setJavaVM(vm);
否则cocos2d没办法调用各个sdk
3:定义的插件需要在插件类里面定义构造函数
public xxxx(Context context) {
mContext = (Activity) context;
mAdapter = this;
}
因为创建插件的时候先调用c++的createPlugin,调到java的PluginWrapper::initPlugin,
在此,会把传入的类名,通过c.getDeclaredConstructor(Context.class).newInstance(ctx);实例化java插件类
c是插件类,c.getDeclaredConstructor(Context.class)获取类中定义的带有(Context参数)的构造函数,
newInstance是创建类,并把PluginWrapper存储的游戏主Activity,传给插件
4:插件中callFuncWithParam接口,能够调用的都是普通函数,不能掉用静态函数
5:插件回调流程,以微博为例:
java调用wrapper的OnShareResult时候,会调用nativeOnShareResult函数,native函数Java_org_cocos2dx_plugin_SocialWrapper_nativeOnShareResult中,
会获取微博插件的实例,调用c++实例的onShareResult,进而调用到m_pListener实例中,若此实例有被绑定到javascript中,则调用javascript
6:JAVA对象与c++对象的关联
在调用loadPlugin的时候,会调用c++的插件工厂的createPlugin方法,先是调用java的initPlugin方法,实例化java插件,在获取插件实例的类型,
根据不同类型,创建不同的c++实例,然后调用PluginUtils::initJavaPlugin函数,把插件名,java实例,c++实例绑定在一起,以后从调用c++实例方法的时候,
就能找到对应的java实例,进而调用到java方法中;反过来也是如此
1:需要在OnCreate中调用
PluginWrapper.init(this);
PluginWrapper.setGLSurfaceView(Cocos2dxGLSurfaceView.getInstance());
保存游戏activity
2:在jni的JNI_OnLoad函数中调用
PluginJniHelper::setJavaVM(vm);
否则cocos2d没办法调用各个sdk
3:定义的插件需要在插件类里面定义构造函数
public xxxx(Context context) {
mContext = (Activity) context;
mAdapter = this;
}
因为创建插件的时候先调用c++的createPlugin,调到java的PluginWrapper::initPlugin,
在此,会把传入的类名,通过c.getDeclaredConstructor(Context.class).newInstance(ctx);实例化java插件类
c是插件类,c.getDeclaredConstructor(Context.class)获取类中定义的带有(Context参数)的构造函数,
newInstance是创建类,并把PluginWrapper存储的游戏主Activity,传给插件
4:插件中callFuncWithParam接口,能够调用的都是普通函数,不能掉用静态函数
5:插件回调流程,以微博为例:
java调用wrapper的OnShareResult时候,会调用nativeOnShareResult函数,native函数Java_org_cocos2dx_plugin_SocialWrapper_nativeOnShareResult中,
会获取微博插件的实例,调用c++实例的onShareResult,进而调用到m_pListener实例中,若此实例有被绑定到javascript中,则调用javascript
6:JAVA对象与c++对象的关联
在调用loadPlugin的时候,会调用c++的插件工厂的createPlugin方法,先是调用java的initPlugin方法,实例化java插件,在获取插件实例的类型,
根据不同类型,创建不同的c++实例,然后调用PluginUtils::initJavaPlugin函数,把插件名,java实例,c++实例绑定在一起,以后从调用c++实例方法的时候,
就能找到对应的java实例,进而调用到java方法中;反过来也是如此