上篇,把基本工作做完了,接下来,在 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;">
- 下片再继续
来源: http://www.bubuko.com/infodetail-2215472.html