• Cocos2d-x开发的Android应用怎么加入插屏广告


    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());就能够取得的。

  • 相关阅读:
    ubuntu 安装PHP
    修改rm 防止误删除
    游标输出
    微软已经提供了好几个开源的小项目供学习参考
    数据库存取时间比较
    UML建模工具比较
    16进制与BYTE类型转换
    显示有换行字符的提示框
    ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)
    .net 动态sql 参数应用 oracle和sql server的比较
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6955143.html
Copyright © 2020-2023  润新知