cocos2d-x-3.0beta2のプロジェクトをgradle化してみる(x-plugin使用編<AdMob,twitter plugin)
自メモ)
記事分割
分割元:
- cocos2d-x-3.0beta2メモ - exception think
- http://d.hatena.ne.jp/kimukou_26/20140205/p1
- cocos2d-x-3.0beta2のプロジェクトをgradle化してみる(x-plugin検証<インターフェース編) - exception think
- cocos2d-x-3.0beta2のプロジェクトをgradle化してみる(x-plugin検証<AdMob,twitter plugin編) - exception think
で実際にPluginを使うコードを書いてみる
のコードをいじる
irof
├── Classes
- AppDelegate.h
#ifndef _APP_DELEGATE_H_ #define _APP_DELEGATE_H_ #include "cocos2d.h" #include "ProtocolAds.h" /** @brief The cocos2d Application. The reason for implement as private inheritance is to hide some interface call by Director. */ class AppDelegate : private cocos2d::Application { public: AppDelegate(); virtual ~AppDelegate(); /** @brief Implement Director and Scene init code here. @return true Initialize success, app continue. @return false Initialize failed, app terminate. */ virtual bool applicationDidFinishLaunching(); /** @brief The function be called when the application enter background @param the pointer of the application */ virtual void applicationDidEnterBackground(); /** @brief The function be called when the application enter foreground @param the pointer of the application */ virtual void applicationWillEnterForeground(); bool init(); cocos2d::plugin::ProtocolAds* getAds(); static AppDelegate* getInstance(); protected: cocos2d::plugin::ProtocolAds* AdsAdmob; static AppDelegate * sm_pSharedAppDelegate; //インスタンス参照 }; #endif // _APP_DELEGATE_H_
- AppDelegate.cpp
#include "AppDelegate.h" #include "HelloWorldScene.h" #include "PluginManager.h" USING_NS_CC; using namespace cocos2d::plugin; typedef std::pair<std::string, std::string> TStrStrPair; AppDelegate * AppDelegate::sm_pSharedAppDelegate = 0; //インスタンス参照の初期化 AppDelegate* AppDelegate::getInstance() { return sm_pSharedAppDelegate; } AppDelegate::AppDelegate() { AdsAdmob = NULL; sm_pSharedAppDelegate = this; //AppDelegateの自己参照をセット } cocos2d::plugin::ProtocolAds* AppDelegate::getAds(){ if(AdsAdmob!=NULL)return AdsAdmob; AdsAdmob = dynamic_cast<ProtocolAds*>(PluginManager::getInstance()->loadPlugin("AdsAdmob")); if(AdsAdmob==NULL){ CCLOG("AdsAdmob is NULL"); } return AdsAdmob; } bool AppDelegate::init(){ AdsAdmob = dynamic_cast<ProtocolAds*>(PluginManager::getInstance()->loadPlugin("AdsAdmob")); if(AdsAdmob==NULL){ CCLOG("AdsAdmob is NULL"); return false; } TAdsDeveloperInfo infoM; infoM["AdmobID"]="1234567890"; AdsAdmob->configDeveloperInfo(infoM); AdsAdmob->setDebugMode(true); return true; } AppDelegate::~AppDelegate() { PluginManager::getInstance()->unloadPlugin("AdsAdmob"); AdsAdmob = NULL; } bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); director->setOpenGLView(glview); } // turn on display FPS director->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object auto scene = HelloWorldScene::createScene(); // run director->runWithScene(scene); //Ads初期化コード CCLOG("pAppDelegate->init %d",init()); return true; } // This function will be called when the app is inactive. When comes a phone call,it's be invoked too void AppDelegate::applicationDidEnterBackground() { Director::getInstance()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { Director::getInstance()->startAnimation(); // if you use SimpleAudioEngine, it must resume here // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); }
- HelloWorldScene.cpp
#include "HelloWorldScene.h" #include "PluginManager.h" #include "ProtocolAds.h" #include "ProtocolShare.h" #include "AppDelegate.h" USING_NS_CC; using namespace cocos2d::plugin; bool HelloWorld::init() { //〜略〜 //表示するためのコード cocos2d::plugin::ProtocolAds* AdsAdmob = AppDelegate::getInstance()->getAds();//広告のInstanceを取得 if(AdsAdmob==NULL){ CCLOG("AdsAdmob is NULL"); } else{ TAdsInfo info; info["AdmobType"] = "1";//AdsAdmob.ADMOB_TYPE_BANNER; info["AdmobSizeEnum"] = "1";//AdmobSizeEnum AdsAdmob->showAds(info, ProtocolAds::kPosTop); } }