zoukankan      html  css  js  c++  java
  • 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());就能够取得的。

  • 相关阅读:
    杀掉MYSQL死锁进程
    成都项目中因为MYSQL与SSDB备分时间不一致,导致主键产生器错误解决一例
    Jenkins Robot framework 持续集成环境搭建
    robot framework环境搭建
    借助autoit操作上传下载对话框(参数化)
    无线热点登陆认证原理探究---captive portal
    nodejs while-loop
    nodejs 模板字符串
    [Node.js] 關於 console.log 的格式化輸出
    nightwatch testing 注意事项
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6955143.html
Copyright © 2011-2022 走看看