Cocos2d-x系统开发游戏已经变得比較流行,但是用这个开发的游戏。想要加入广告就不是那么理想了。尤其是插屏广告。由于插屏广告通常是要在暂停或者结束游戏的时候展示才比較的合理。但是Cocos2d-x是C++语言,展示广告的代码都是写在Java源码里的。这就使得问题有一些麻烦。由于Android下的Cocos2d-x开发使用的是Jni技术,通过该技术,java代码能够调用c++代码,由此能够想到,c++代码也能够调用java代码的。比方我们想使用有米的插屏广告。能够这样加入代码:

Java代码:

public class TestClass extends Cocos2dxActivity

{

public static TestClass paopao = null;  //这个用来存储类的实例

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

paopao = this; //存储类的实例

AdManager.getInstance(this).init(“xxxxxxxxx”,”xxxxxxxxx”, false);   //设置有米广告的ID和密钥

SpotManager.getInstance(this).loadSpotAds();

SpotManager.getInstance(this).setSpotTimeout(5000);

SpotManager.getInstance(this).setShowInterval(60);//设置60秒的显示时间间隔

}

static {

System.loadLibrary(“game”);

}

public static Object getJavaActivity()     //这个函数是用来返回类的实例的

{

return paopao;

}

public void showAds()     //该函数用于展示广告

{

SpotManager.getInstance(this).showSpotAds(this);

}

public void disMissAds()

{

SpotManager.getInstance(this).disMiss();

}

@Override     protected void onStop()

{

//假设不调用此方法,则按home键的时候会出现图标无法显示的情况。

SpotManager.getInstance(this).disMiss();

super.onStop();     }

}

C++代码:

在AppDelegate.cpp中加入这样一个函数

void AppDelegate::ShowAds()

{

JniMethodInfo minfo;

//首先通过TestClass类的getJavaActivity静态函数获取TestClass实例

bool isHave = JniHelper::getStaticMethodInfo(minfo,    ”org/cocos2dx/testexample/TestClass”,    ”getJavaActivity”,    ”()Ljava/lang/Object;”);

jobject activityObj;

if(isHave)  {   activityObj = minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID);  } //获取TestClass实例

isHave = JniHelper::getMethodInfo(minfo,    ”org/cocos2dx/testexample/TestClass”,    ”showAds”,”()V”);

if(isHave)  {   minfo.env->CallVoidMethod(activityObj, minfo.methodID);  }  //运行TestClass的showAds函数来显示广告

}

这样一来,仅仅要在程序的适当地方调用AppDelegate::ShowAds这个函数就能够了。

AppDelegate类的实例通过AppDelegate * app = (AppDelegate *)(CCApplication::sharedApplication());就能够取得的。

最新文章

  1. Autodesk正在招聘Civil、Infraworks金牌支持工程师(Premium Support Specialist)
  2. 解决:Windows 开机弹出AotuIt ERROR 错误
  3. php操作大文件
  4. Java-HashSet
  5. POJ 1182 食物链(种类并查集)
  6. servlet从xml提取数据登陆
  7. Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
  8. Python 学习入门(22)—— 线程同步
  9. 为什么 Linux Mint 比 Ubuntu好?
  10. 2016年团体程序设计天梯赛-决赛 L1-2. I Love GPLT(5)
  11. Ubuntu14.04上安装Composer
  12. swap分析及其使用
  13. Hacking /dev/random: Pipe
  14. Django--Hello
  15. 【iCore4 双核心板_ARM】例程二十六:LWIP_MODBUS_TCP实验——电源监控
  16. 创建servlet程序知识点详解---servlet-day05
  17. Visual Basic 2017 操作Excel和word【2】持续更新……
  18. C++中int与string的相互转换【转】
  19. myEtherWallet在线钱包的使用
  20. 百度地图InfoWindow弹窗圆角

热门文章

  1. JAVA学习第四十六课 — 其它对象API(二)Date类 & Calendar类(重点掌握)
  2. 51nod-1273: 旅行计划
  3. 安卓操作sqlite3,增删改查
  4. FZOJ--2212--Super Mobile Charger(水题)
  5. 5.QT制作编译器,可以简单支持中文编程
  6. RHEL启动错误:Kernel panic - not syncing:Attempted to kill init!解决方案
  7. button click event in jqxgrid jqwidgets
  8. Service和Servlet的区别
  9. NodeJS学习笔记 进阶 (8)express+morgan实现日志记录(ok)
  10. CSS 预处理语言之 less 篇