如何在cocos2dx视频教程集成第三方广告

& &接着上篇继续:1、在jni下的.mk里面添加LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/DomobAd.cpp \
../../Classes/HelloWorldScene.cpp2、在AppActivity下添加如下代码:/****************************************************************************
Copyright (c)
Ricardo Quesada
Copyright (c)
cocos2d-x.org
Copyright (c) 2011
Zynga Inc.
Copyright (c)
Chukong Technologies Inc.
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
and associated documentation files (the &Software&), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED &AS IS&, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
org.cocos2dx.
import org.cocos2dx.lib.Cocos2dxA
import org.cocos2dx.lib.Cocos2dxGLSurfaceV
import cn.domob.android.ads.AdEventL
import cn.domob.android.ads.AdV
import cn.domob.android.ads.InterstitialAd;
import cn.domob.android.ads.InterstitialAdL
import cn.domob.android.ads.AdManager.ErrorC
import android.annotation.SuppressL
import android.content.C
import android.os.B
import android.os.H
import android.os.;
import android.util.L
import android.view.V
import android.widget.RelativeL
import android.widget.T
@SuppressLint(&HandlerLeak&)
public class AppActivity extends Cocos2dxActivity {
public static final String PUBLISHER_ID = &xxxxxxx&;//你自己应用的ID ,之前说过
public static final String InlinePPID = &xxxxxxxx&;
public static final String InterstitialPPID = &16xxxxxxxx&;
private static H
private static RelativeLayout bannerL
private AdView adV
private InterstitialAd mInterstitialAd;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bannerLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams parentLayputParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
this.addContentView(bannerLayout, parentLayputParams);
if (mInterstitialAd != null) {
mInterstitialAd = new InterstitialAd(AppActivity.this, PUBLISHER_ID, InterstitialPPID);
mInterstitialAd.setInterstitialAdListener(new InterstitialAdListener() {
public void onInterstitialAdReady() {
Log.i(&DomobSDKCocos2d-xDemo&, &onAdReady&);
//Toast.makeText(getApplicationContext(),&&, Toast.LENGTH_SHORT).show();
public void onLandingPageOpen() {
Log.i(&DomobSDKCocos2d-xDemo&, &onLandingPageOpen&);
public void onLandingPageClose() {
Log.i(&DomobSDKCocos2d-xDemo&, &onLandingPageClose&);
public void onInterstitialAdPresent() {
Log.i(&DomobSDKCocos2d-xDemo&, &onInterstitialAdPresent&);
public void onInterstitialAdDismiss() {
// Request new ad when the previous interstitial ad
// was closed.
mInterstitialAd.loadInterstitialAd();
Log.i(&DomobSDKCocos2d-xDemo&, &onInterstitialAdDismiss&);
public void onInterstitialAdFailed(ErrorCode errorCode) {
Log.i(&DomobSDKCocos2d-xDemo&, &onInterstitialAdFailed&);
public void onInterstitialAdLeaveApplication() {
Log.i(&DomobSDKCocos2d-xDemo&, &onInterstitialAdLeaveApplication&);
public void onInterstitialAdClicked(InterstitialAd interstitialAd) {
Log.i(&DomobSDKCocos2d-xDemo&, &onInterstitialAdClicked&);
mInterstitialAd.loadInterstitialAd();
handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
/*case 0:// showBanner
if (bannerLayout.getChildCount() == 0) {
adView = new AdView(AppActivity.this, PUBLISHER_ID, InlinePPID);
// set banner size
adView.setAdSize(AdView.INLINE_SIZE_320X50);
adView.setKeyword(&game&);
adView.setUserGender(&male&);
adView.setUserBirthdayStr(&&);
adView.setUserPostcode(&123456&);
adView.setAdEventListener(new AdEventListener() {
public void onAdOverlayPresented(AdView adView) {
Log.i(&DomobSDKCocos2d-xDemo&, &overlayPresented&);
public void onAdOverlayDismissed(AdView adView) {
Log.i(&DomobSDKCocos2d-xDemo&, &Overrided be dismissed&);
public void onAdClicked(AdView adView) {
Log.i(&DomobSDKCocos2d-xDemo&, &onDomobAdClicked&);
public void onLeaveApplication(AdView adView) {
Log.i(&DomobSDKCocos2d-xDemo&, &onDomobLeaveApplication&);
public Context onAdRequiresCurrentContext() {
public void onAdFailed(AdView adView, ErrorCode errorCode) {
Log.i(&DomobSDKCocos2d-xDemo&, &onDomobAdFailed&);
public void onEventAdReturned(AdView adView) {
Log.i(&DomobSDKCocos2d-xDemo&, &onDomobAdReturned&);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
bannerLayout.addView(adView, layoutParams);
if (adView != null) {
adView.setVisibility(View.VISIBLE);
adView.requestRefreshAd();
if (adView != null) {
adView.setVisibility(View.GONE);
if (mInterstitialAd != null) {
if (mInterstitialAd.isInterstitialAdReady()) {
mInterstitialAd.showInterstitialAd(AppActivity.this);
Log.i(&DomobSDKCocos2d-xDemo&, &Interstitial Ad is not ready&);
mInterstitialAd.loadInterstitialAd();
Log.i(&DomobSDKCocos2d-xDemo&, &Interstitial Ad is not init&);
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
return glSurfaceV
//public static void showBannerStatic() {
// handler.sendEmptyMessage(0);
//public static void hideBannerStatic() {
// handler.sendEmptyMessage(1);
//public static void initInterstitialStatic() {
//handler.sendEmptyMessage(2);
public static void showInterstitialStatic() {
handler.sendEmptyMessage(3);
.loadLibrary(&cocos2dcpp&);
到现在,代码添加完毕,也可以运行代码了,。。。也许途中你会遇见各种问题,比如,异常退出,比如调试不进,都要靠自己耐心的去解决。下面简单介绍一些代码:在代码中,你会看见private static H代码。handler是java中处理异步消息的机制,之所以接入平台会用到handler,是因为,接入广告后,会联网,如果这个操作放入主线程中,界面就会出现假死现象,最后导致android系统“强制关闭”,所以对于这样一个耗时操作,我们把他放在子线程中,但是子线程又设计到UI更新,而对于Android而言,主线程是不的,所以handler就是解决这个问题的利器。handler运行在主线程中,它与子线程可以通过消息对象来传递数据。至于jni,主要调用代码在这:&bool&ret = JniHelper::getStaticMethodInfo(info,&org/cocos2dx/cpp/TestJni&,&func1&,&()V&);其中要注意你的路径,函数类型,传递参数类型。其他没什么了。我要继续加油,吃午饭了。还是请大神绕道吧
版权声明:本文为博主原创,未经博主允许不得转载。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
Android和IOS版Cocos2d-X应用的AnySDK集成Admob管理库教程
下载积分:1000
内容提示:Android和IOS版Cocos2d-X应用的AnySDK集成Admob管理库教程
文档格式:DOC|
浏览次数:36|
上传日期: 11:33:31|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
Android和IOS版Cocos2d-X应用的AnySDK集成Admob管理库
官方公共微信JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)
JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)
发布时间: 20:41:56
编辑:www.fx114.net
本篇文章主要介绍了"JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)",主要涉及到JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)方面的内容,对于JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)感兴趣的同学可以参考一下。
&219人阅读&&&
调用非静态方法首先就是调用的静态方法得到要调用的java的类对象然后通过调用
minfo.env-&CallVoidMethod(activityObj, minfo.methodID);方法把对象和要调用的方法以及参数(如果有
)传递个java类对象中的非静态方法;
// c++中調用的方法
& & public static Object rtnActivity() {
& & & & System.out.println(&----------rtnActivity&);
& & & & return mainA
public void showAD() {
Log.i(&test&, &jnihelper do ...show ad&);
// 展示插播广告,可以不调用loadSpot独立使用
SpotManager.getInstance(MainActivity.this).showSpotAds(
MainActivity.this, new SpotDialogListener() {
public void onShowSuccess() {
Log.i(&SpotAd&, &展示成功&);
public void onShowFailed() {
Log.i(&SpotAd&, &展示失败&);
红色部分替换成你要展示的广告即可
c++调用cpp:
//判断当前是否为Android平台;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)&
//定义Jni函数信息结构体;
JniMethodI
//返回一个bool值表示是否找到此函数;
bool isHave = JniHelper::getStaticMethodInfo
(minfo,&org/cocos2dx/hellocpp/MainActivity&,&rtnActivity&, &()Ljava/lang/O&);
jobject activityO
if (isHave) {
//CallStaticObjectMethod调用java函数,并把返回值赋值给activityObj
activityObj = minfo.env-&CallStaticObjectMethod(minfo.classID, minfo.methodID);
//2. 查找displayWebView接口,获取其函数信息,并用jobj调用;
//定义Jni函数信息结构体;
isHave = JniHelper::getMethodInfo(minfo,&org/cocos2dx/hellocpp/MainActivity&,&showAD&,&
if (!isHave)
CCLog(&jni:showAD 函数不存在;&);
//调用displayWebView函数,并传入参数
minfo.env-&CallVoidMethod(activityObj, minfo.methodID);
对于要调用带参数的java非静态方法的可参见分割线一下部分
-----------------华丽的分割线---------------------------------------------
通过JNI获取java虚拟机,再获取当前程序的JNI环境,通过JNI环境获取需要调用的java类信息,再获取需要调用的java类中的函数信息。再通过JNI环境调用,使用类信息、函数信息,调用对应的java函数。
看起来好像有点复杂,but不用担心,cocos2d-x中有一个JniHelper类(头文件的copyright为:cocos2d-x.org,是Google提供的还是cocos2d-x小组自己封装的我就不清楚了),它已经把这些工作封装好了。
JniHelper类的使用
加入如下头文件:
#include &platform/android/jni/JniHelper.h&
需要使用的接口如下:
static bool getStaticMethodInfo(JniMethodInfo &methodinfo, const char *className, const char *methodName, const char *paramCode);
static bool getMethodInfo(JniMethodInfo &methodinfo, const char *className, const char *methodName, const char *paramCode);
实现上我们只需要使用上面这两个接口,就可以获取java类的所有函数信息了。JNI环境的获取、各种错误处理都已经在这两个接口实现中封装好了。
先上代码,再来依次讲解每个参数的意义和使用方法:
& & //函数信息结构体
& & JniMethodI
& & bool isHave = JniHelper::getStaticMethodInfo(minfo,/*JniMethodInfo的引用*/
& & & & & & & & & & & & & & & & & & & & & & & & &&com/omega/MyApp&,/*类的路径*/
& & & & & & & & & & & & & & & & & & & & & & & & &&getJavaActivity&,/*函数名*/
& & & & & & & & & & & & & & & & & & & & & & & & &&()Ljava/lang/O&);/*函数类型简写*/
& & jobject activityO
& & if (isHave)
& & & & //CallStaticObjectMethod调用java函数,并把返回值赋值给activityObj
& & & & activityObj = minfo.env-&CallStaticObjectMethod(minfo.classID, minfo.methodID);
OK,很简单。上面的代码,就是使用JNI在C++中调用java类静态函数的典型使用方法。只有两步:
1. 获取java函数的信息,classid、methodid等等
2. 选择JNIEnv中的接口,进行函数调用
getStaticMethodInfo参数详解
两个接口的参数一样,意义也相同,详解如下:
JniMethodInfo &methodinfo JniMethodInfo对象的引用,函数执行中会把jniEvn、classid、methodid写入到引用中。
const char *className 类的路径,把类的完整包名写全,用法如以上代码。
const char *methodName 函数名,函数名写上就行了。
const char *paramCode 函数类型简写
这个参数需要单独介绍,它的格式为:(参数)返回类型。
例如:无参数,void返回类型函数,其简写为 ()V
java中的类型对应的简写如下:
参数类型 参数简写
Object Ljava/lang/S L用/分割类的完整路径
Array [Ljava/lang/S [签名 [I
多参数的函数
如果函数有多个参数,直接把简写并列即可。注意Object与Array型参数简写结尾的分号,示例:
IIII //4个int型参数的函数
ILjava/lang/SI //整形,string类型,整形组合 (int x, String a, int y)
通过JNIEnv进行函数调用
JNIEvn有一系列的CallStatic[返回类型]Method、Call[返回类型]Method接口,需要针对不同的函数返回类型选择调用。
[返回类型]以函数返回类型的不同,对应不同的函数名。
CallStaticVoidMethod ———void
CallVoidMethod ———void
其对应关系如下:
函数名 函数返回值类型
Object jobject
Boolean jboolean
Byte jbyte
Char jchar
Short jshort
Long jlong
Float jfloat
Double jdouble
调用有参数的java函数时,需要把对应的参数传递进去。需要把参数按顺序加入到classid、methodid后面,并且需要做类型转换。例如:
jint jX = 10;
jint jY = 10;
minfo.env-&CallStaticVoidMethod(minfo.classID, minfo.methodID, jX, jY);
参数类型转换关系如下:
C++类型 JAVA类型
boolean jboolean
byte jbyte
char jchar
short jshort
long jlong
float jfloat
double jdouble
Object jobject
Class jclass
String jstring
Object[] jobjectArray
boolean[] jbooleanArray
byte[] jbyteArray
char[] jcharArray
short[] jshortArray
int[] jintArray
long[] jlongArray
float[] jfloatArray
double[] jdoubleArray
string类型的转换
实际上我们最常用的参数类型,主要是内建的数据类型、string字符串类型。数据类型可以直接转为j类型,但是string类型需要做如下处理:
jstring jmsg = minfo.env-&NewStringUTF(&&);
minfo.env-&CallStaticVoidMethod(minfo.classID, minfo.methodID, jmsg);
非静态函数的调用
非静态函数的调用与静态函数的调用类型,但是需要通过一个静态函数获取java类对象。
//C++代码
& & //1. 获取activity静态对象
& & JniMethodI
& & bool isHave = JniHelper::getStaticMethodInfo(minfo,
& & & & & & & & & & & & & & & & & & & & & & & & &&com/omega/MyApp&,
& & & & & & & & & & & & & & & & & & & & & & & & &&getJavaActivity&,
& & & & & & & & & & & & & & & & & & & & & & & & &&()Ljava/lang/O&);
& & jobject activityO
& & if (isHave)
& & & & //调用静态函数getJavaActivity,获取java类对象。
& & & & activityObj = minfo.env-&CallStaticObjectMethod(minfo.classID, minfo.methodID);
& & //2. 查找displayWebView接口,获取其函数信息,并用jobj调用
& & isHave = JniHelper::getMethodInfo(minfo,&com/omega/MyApp&,&displayWebView&, &(IIII)V&);&
& & if (!isHave)
& & & & CCLog(&jni:displayWebView 函数不存在&);
& & & & //调用此函数
& & & & jint jX = (int)tlX;
& & & & jint jY = (int)tlY;
& & & & jint jWidth = (int)webW
& & & & jint jHeight = (int)webH
& & & & //调用displayWebView函数,并传入参数
& & & & minfo.env-&CallVoidMethod(activityObj, minfo.methodID, jX, jY, jWidth, jHeight);
详尽的示例代码
最后,放一块比较详细的JNI使用代码,基本上覆盖了的全部使用情况。
& & JniMethodI//JniHelper &&
& & /* 测试用方法 */&
& & /*bool isHave = JniHelper::getStaticMethodInfo(minfo,&com/cocoa/HiWorld&,&loginGree&, &()V&); //
& & &if (isHave) {
& & &//CCLog(&有showText &);
& & &minfo.env -& CallStaticVoidMethod(minfo.classID,minfo.methodID);
& & &}else
& & &//CCLog(&没有方法showText&);
& & /* 分享 */
& & /*//将c++中的string转换成java中的string
& & &//char str[] = &test&;
& & &bool isHave = JniHelper::getStaticMethodInfo(minfo,&com/cocoa/HiWorld&,&shareSina&, &(Ljava/lang/SLjava/lang/S)V&); //
& & &if (isHave) {
& & &//CCLog(&有share &);
& & &jstring jstr = minfo.env-&NewStringUTF(&test1 share&);
& & &jstring jst = minfo.env-&NewStringUTF(&/data/data/com.cocoa/cy.png&);&
& & &//jstring jst = minfo.env-&NewStringUTF(&&);
& & &minfo.env -& CallStaticVoidMethod(minfo.classID,minfo.methodID,jstr,jst);
& & &}else
& & &//CCLog(&没有方法share&);
& & /* 设置高分 */
& & /*jint ind = 0;
& & &jlong lsre = 2202l;
& & &bool isHave = JniHelper::getStaticMethodInfo(minfo,&com/cocoa/HiWorld&,&setHighScore&, &(IJ)V&);&
& & &if (isHave) {
& & &minfo.env -& CallStaticVoidMethod(minfo.classID,minfo.methodID,ind,lsre); & & & & & &
& & /* 成就解锁 */
& & /*jint aind = 0;
& & &bool isHave = JniHelper::getStaticMethodInfo(minfo,&com/cocoa/HiWorld&,&unLock&, &(I)V&);&
& & &if (isHave) {
& & &minfo.env -& CallStaticVoidMethod(minfo.classID,minfo.methodID,aind); & & & & & &
& & /* 测试用方法 */&
& & bool isHave = JniHelper::getStaticMethodInfo(minfo,&com/cocoa/HiWorld&,&rtnActivity&,&()Ljava/lang/O&);
& & if (isHave) {&
& & & & jobj = minfo.env-&CallStaticObjectMethod(minfo.classID, minfo.methodID);&
& & } & & &&
& & //CCLog(& jobj存在&);&
& & /* 测试用方法,非静态无参数无返回值方法 */
& & /*isHave = JniHelper::getMethodInfo(minfo,&com/cocoa/HiWorld&,&showText&, &()V&);&
& & &if (isHave) {
& & &minfo.env -& CallVoidMethod(jobj,minfo.methodID);
& & /* 测试用方法,非静态有java类型的String参数无返回值方法 */
& & /*isHave = JniHelper::getMethodInfo(minfo,&com/cocoa/HiWorld&,&showText&, &(Ljava/lang/S)V&);&
& & &if (isHave) {
& & &jstring jmsg = minfo.env-&NewStringUTF(&msg okey!&);
& & &minfo.env -& CallVoidMethod(jobj,minfo.methodID,jmsg);
& & /* 测试用方法,返回java类型的String,有java类型的String和int参数方法 */
& & /*isHave = JniHelper::getMethodInfo(minfo,&com/cocoa/HiWorld&,&showText&, &(Ljava/lang/SI)Ljava/lang/S&);&
& & &if (isHave) {
& & &jstring jmsg = minfo.env-&NewStringUTF(&msg okey! return string&);
& & &jint index = 0;
& & &minfo.env -& CallObjectMethod(jobj,minfo.methodID,jmsg,index);
& & /* 测试用方法,返回java类型的String[],有java类型的String[]和int参数方法 */
& & /*isHave = JniHelper::getMethodInfo(minfo,&com/cocoa/HiWorld&,&showText&, &([Ljava/lang/SI)[Ljava/lang/S&);&
& & &if (isHave) {
& & &jobjectArray args = 0;
& & &jsize len = 5;
& & &const char* sa[] = {&Hi,&,&World!&,&JNI &,&is &,&fun&};
& & &int i = 0;
& & &args = minfo.env-&NewObjectArray(len,minfo.env-&FindClass(&java/lang/String&),0);
& & &for(i=0;iNewStringUTF(sa[i]);
& & &minfo.env-&SetObjectArrayElement(args,i,str);
& & &//minfo.env-&GetStringArrayRegion(args,0,10,buf);
& & &//jintArray jmsg = {1,2,3};
& & &//minfo.env-&NewStringUTF(&msg okey! return string&);
& & &jint index = 0;
& & &minfo.env -& CallObjectMethod(jobj,minfo.methodID,args,index);
& & /* 测试用方法,无返回类型,有java类型的int[]和int参数方法 */
& & /*isHave = JniHelper::getMethodInfo(minfo,&com/cocoa/HiWorld&,&testArr&, &([II)V&);&
& & &if (isHave) {
& & &jint buf[]={7,5,8,9,3};
& & &jintArray jintA //定义jint数组
& & &jintArr = minfo.env-&NewIntArray(5);
& & &minfo.env-&SetIntArrayRegion(jintArr,0,5,buf);
& & &jint index = 0;
& & &minfo.env -& CallVoidMethod(jobj,minfo.methodID,jintArr,index);
& & /* 测试用方法,无返回类型,有java类型的byte[]和int参数方法 */
& & isHave = JniHelper::getMethodInfo(minfo,&com/cocoa/HiWorld&,&testArr&, &([BI)V&);&
& & if (isHave) {
& & & & jbyte buf[]={7,5,8,9,3};
& & & & jbyteArray jbyteA //定义jbyte数组
& & & & jbyteArr = minfo.env-&NewByteArray(5);
& & & & minfo.env-&SetByteArrayRegion(jbyteArr,0,5,buf);
& & & & jint index = 0;
& & & & minfo.env -& CallVoidMethod(jobj,minfo.methodID,jbyteArr,index);
private static HiWorld hiWorld =
protected void onCreate(Bundle savedInstanceState) {
& & super.onCreate(savedInstanceState);
& & hiWorld =
& & if (detectOpenGLES20()) {
& & & & // get the packageName,it's used to set the resource path
& & & & String packageName = getApplication().getPackageName();
& & & & super.setPackageName(packageName);
& & & & // set content
& & & & setContentView(R.layout.game_demo);
& & & & getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
& & & & & & & & & & & & & & & & & R.layout.window_title);
& & & & mGLView = (Cocos2dxGLSurfaceView) findViewById(R.id.game_gl_surfaceview);
& & & & mGLView.setTextField((Cocos2dxEditText) findViewById(R.id.textField));
& & & & mGLView.setEGLContextClientVersion(2);
& & & & mGLView.setCocos2dxRenderer(new Cocos2dxRenderer());
& & & & task = new TimerTask() {
& & & & & & @Override
& & & & & & public void run() {
& & & & & & & & // HiWorld.shoot(hiWorld);
& & & & & & & & Log.e(&-------------------&, &-------------------&);
& & & & & & & & // 调用c++中的方法
& & & & & & & & System.out.println(&------------------------&
& & & & & & & & & & & & & & & & & &+ stringZjy1());
& & & & & & }
& & & & };
& & & & timer = new Timer();
& & & & timer.schedule(task, 5000);
& & } else {
& & & & Log.d(&activity&, &don't support gles2.0&);
& & & & finish();
& & static {
& & & & System.loadLibrary(&game&);
& & // c++中調用的方法
& & public static Object rtnActivity() {
& & & & System.out.println(&----------rtnActivity&);
& & & & return hiW
& & // c++中調用的方法,传String类型
& & public void showText(final String msg) {&
& & & & // 添加到主线程
& & & & hiWorld.runOnUiThread(new Runnable() {
& & & & & & public void run() {&
& & & & & & & & System.out.println(&----------msg:&+msg);
& & & & & & }
& & & & });
& & //c++中調用的方法,传String类型和int类型
& & public String showText(final String msg,final int index) {&
& & & & // 添加到主线程
& & & & hiWorld.runOnUiThread(new Runnable() {
& & & & & & public void run() {&
& & & & & & & & System.out.println(&----------msg:&+msg+&; index=&+index);
& & & & & & }
& & & & });
& & & & return &okey String showText(final String msg,final int index)&;
& & //c++中調用的方法,传String[]类型和int类型
& & public String[] showText(final String[] msg,final int index) {&
& & & & String[] strArr = {&1&,&2&,&3&,&4&,&5&};
& & & & // 添加到主线程
& & & & hiWorld.runOnUiThread(new Runnable() {
& & & & & & public void run() {&
& & & & & & & & for(String _str:msg){
& & & & & & & & & & System.out.println(&----------String[] msg:&+_str+&; index=&+index);
& & & & & & & & }
& & & & & & }
& & & & });
& & & & return strA
& & //c++中調用的方法,传int[]类型和int类型
& & public void testArr(final int msg[],final int index) {&
& & & & // 添加到主线程
& & & & hiWorld.runOnUiThread(new Runnable() {
& & & & & & public void run() {&
& & & & & & & & System.out.println(&----------int[] msg len:&+msg.length);
& & & & & & & & for(int _bl:msg){
& & & & & & & & & & System.out.println(&----------int[] msg:&+_bl+&; index=&+index);
& & & & & & & & }
& & & & & & }
& & & & });
& & //c++中調用的方法,传int[]类型和int类型
& & public void testArr(final byte msg[],final int index) {&
& & & & // 添加到主线程
& & & & hiWorld.runOnUiThread(new Runnable() {
& & & & & & public void run() {&
& & & & & & & & System.out.println(&----------byte[] msg len:&+msg.length);
& & & & & & & & for(int _bl:msg){
& & & & & & & & & & System.out.println(&----------byte[] msg:&+_bl+&; index=&+index);
& & & & & & & & }
& & & & & & }
& & & & });
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

我要回帖

更多关于 cocos2dx官网 的文章

 

随机推荐