zoukankan      html  css  js  c++  java
  • cocos2dx-3.1 接入多盟广告sdk+Android (2)

           上篇,把基本工作做完了,接下来,在C++下加入代码。

          1、打开win32下的project,加入一个类。DomobAd。代码例如以下,


    <pre name="code" class="cpp">#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    #include <jni.h>
    #include "platform/android/jni/JniHelper.h"
    //#include <android/log.h>
    #include "cocos2d.h"
    #endif
    using namespace cocos2d;
    class DomobAd
    {
    public:
    	DomobAd();
    	virtual ~DomobAd();
    	
    	static void showInterstitial();
    	/*static void initInterstitial();
    	static void showBanner();
    	static void hideBanner();*/
    };

    #include "DomobAd.h"
    DomobAd::DomobAd(){}
    DomobAd::~DomobAd(){}
    //void DomobAd::showBanner()
    //{
    //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
    //	JniMethodInfo showBanner;
    //	bool isHave = JniHelper::getStaticMethodInfo(showBanner, "org/cocos2dx/cpp/AppActivity", "showBannerStatic", "()V");
    //	if (!isHave) {
    //		CCLog("jni:showBannerStatic false");
    //	}
    //	else{
    //
    //		showBanner.env->CallStaticVoidMethod(showBanner.classID, showBanner.methodID);
    //	}
    //#endif
    //}
    //void DomobAd::hideBanner()
    //{
    //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
    //	JniMethodInfo hideBanner;
    //	bool isHave = JniHelper::getStaticMethodInfo(hideBanner, "org/cocos2dx/cpp/AppActivity", "hideBannerStatic", "()V");
    //	if (!isHave) {
    //		CCLog("jni:hideBannerStatic false");
    //	}
    //	else{
    //		CCLog("jni:hideBannerStatic true");
    //
    //		hideBanner.env->CallStaticVoidMethod(hideBanner.classID, hideBanner.methodID);
    //	}
    //#endif
    //}
    
    void DomobAd::showInterstitial()
    {
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
    	JniMethodInfo showInterstitial;
    	bool isHave = JniHelper::getStaticMethodInfo(showInterstitial, "org/cocos2dx/cpp/AppActivity", "showInterstitialStatic", "()V");
    	if (!isHave) {
    		CCLog("jni:showInterstitial false");
    	}
    	else{
    		CCLog("jni:showInterstitial true");
    
    		showInterstitial.env->CallStaticVoidMethod(showInterstitial.classID, showInterstitial.methodID);
    	}
    #endif
    }
    
    //void DomobAd::initInterstitial()
    //{
    //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 
    //	JniMethodInfo initInterstitial;
    //	bool isHave = JniHelper::getStaticMethodInfo(initInterstitial, "org/cocos2dx/cpp/AppActivity", "initInterstitialStatic", "()V");
    //	if (!isHave) {
    //		CCLog("jni:initInterstitial false");
    //	}
    //	else{
    //		CCLog("jni:initInterstitial true");
    //
    //		initInterstitial.env->CallStaticVoidMethod(initInterstitial.classID, initInterstitial.methodID);
    //	}
    //#endif
    //}
    

    #ifndef __APPMACROS_H__
    #define __APPMACROS_H__
    
    #include "cocos2d.h"
    
    
    
    #define DESIGN_RESOLUTION_480X320    0
    #define DESIGN_RESOLUTION_1024X768   1
    #define DESIGN_RESOLUTION_2048X1536  2
    
    /* If you want to switch design resolution, change next line */
    #define TARGET_DESIGN_RESOLUTION_SIZE  DESIGN_RESOLUTION_480X320
    
    typedef struct tagResource
    {
        cocos2d::CCSize size;
        char directory[100];
    }Resource;
    
    static Resource smallResource  =  { cocos2d::CCSizeMake(480, 320),   "iphone" };
    static Resource mediumResource =  { cocos2d::CCSizeMake(1024, 768),  "ipad"   };
    static Resource largeResource  =  { cocos2d::CCSizeMake(2048, 1536), "ipadhd" };
    
    #if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
    static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
    #elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
    static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
    #elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)
    static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(2048, 1536);
    #else
    #error unknown target design resolution!
    #endif
    
    // The font size 24 is designed for small resolution, so we should change it to fit for current design resolution
    #define TITLE_FONT_SIZE  (cocos2d::CCEGLView::sharedOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24)
    
    #endif /* __APPMACROS_H__ */
    

    
    
    </pre><pre name="code" class="cpp">
    //在helloworldscene.cpp加入例如以下代码就可以:
    <pre name="code" class="cpp"> CCMenuItemLabel  * closeInterstital=CCMenuItemLabel::create(CCLabelTTF::create("showInterstital", "Helvetica", 40),this, menu_selector(HelloWorld::menuShowInterstitialCallback));

    void HelloWorld::menuShowInterstitialCallback(cocos2d::CCObject* pSender){
        DomobAd::showInterstitial();
    }

    //JniHelper 类是cocos提供的。详细使用方法:http://blog.csdn.net/luxiaoyu_sdc/article/details/15874505<a target=_blank href="http://blog.csdn.net/luxiaoyu_sdc/article/details/15874505">点击打开链接</a>
    </pre><pre name="code" class="cpp" style="font-size: 13.3333339691162px;">下片再继续

    
    

  • 相关阅读:
    一款好用的绘图软件gnuplot
    剑指offer--18.从尾到头打印链表
    剑指offer--17.第一个只出现一次的字符
    剑指offer--16.数组中重复的数字
    剑指offer--15.把字符串转换成整数
    剑指offer--14.求1+2+3+...+n
    剑指offer--13.二进制中1的个数
    剑指offer--12.不用加减乘除做加法
    剑指offer--11.数组中出现次数超过一半的数字
    剑指offer--10.最小的K个数
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7203101.html
Copyright © 2011-2022 走看看