Windows phone 8 AdMob间质Cocos2d-x WP8

Windows phone 8 AdMob间质Cocos2d-x WP8,windows-phone-8,admob,windows-phone-8.1,cocos2d-x,c++-cx,Windows Phone 8,Admob,Windows Phone 8.1,Cocos2d X,C++ Cx,enyone能告诉我如何在我的cocos2d-x游戏中在场景之间调用AdMob中间层吗 我试过这个指南,但我不知道如何从cocos类运行它 还有其他的方法吗,或者一些指南吗?我最近做了。你几乎不需要做什么。首先,创建helper类,它将帮助您调用本机函数(我对所有3种平台都使用它,但这里只有windows phone): NativeHelper.h: #ifndef __NATIVE_HELPER_H_ #define __NATIVE_HELPER_H_ #include <st

enyone能告诉我如何在我的cocos2d-x游戏中在场景之间调用AdMob中间层吗

我试过这个指南,但我不知道如何从cocos类运行它


还有其他的方法吗,或者一些指南吗?

我最近做了。你几乎不需要做什么。首先,创建helper类,它将帮助您调用本机函数(我对所有3种平台都使用它,但这里只有windows phone):

NativeHelper.h:

#ifndef  __NATIVE_HELPER_H_
#define  __NATIVE_HELPER_H_

#include <string>
#include <functional>
#include "cocos2d.h"

using namespace std;
USING_NS_CC;

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
namespace cocos2d

{

    public delegate void CSharpShowInterstitialDelegate();

    public ref class WP8NativeEventHelper sealed

    {

    public:

        void WP8NativeEventHelper::SetCSharpShowInterstitialDelegate(CSharpShowInterstitialDelegate^ delegate){

            m_CSharpShowInterstitialDelegate = delegate;

        }

        void CallShowInterstitial();

    private:

        property static CSharpShowInterstitialDelegate^ m_CSharpShowInterstitialDelegate;

    };



}
#endif

class NativeHelper
{
public:
    static void showInterstitial(string adSdk);

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
    WP8NativeEventHelper^ wp8helper;
#endif

    //instance required only for setting callback
    static NativeHelper* getInstance();

    ~NativeHelper()
    {
        instanceFlag = false;
    }

private:

    static bool instanceFlag;
    static NativeHelper* instance;

    NativeHelper() {};

};

#endif // __NATIVE_HELPER_H_
这里只是CallShowInterstitual的一个实现。同样在NativeHelper::showInterstitial中,我们调用了C++/CX,后者后来调用了C

现在是c代码(MainPage.xaml.cs):

命名空间外部:

using GoogleAds;
课堂内:

  private InterstitialAd interstitialAd;
在构造函数中:

WP8NativeEventHelper helper = new WP8NativeEventHelper();
helper.SetCSharpShowInterstitialDelegate(showInterstitial);
并创建一个间隙功能:

public void showInterstitial() //we recreate interstitial each time, because otherwise it'll show only once, only new requests won't work
{
  interstitialAd = new InterstitialAd("MY_AD_UNIT_ID");
  AdRequest adRequest = new AdRequest();

  #if DEBUG
  // Enable test ads.
  adRequest.ForceTesting = true;
  #endif


  interstitialAd.ReceivedAd += OnAdReceived;
  interstitialAd.LoadAd(adRequest);
}
最后,我想到:

private void OnAdReceived(object sender, AdEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("Ad received successfully");
  interstitialAd.ShowAd();
}
按照本指南设置admob:

现在让我们用这个

在HelloWorldScene.h中添加:

#include "NativeHelper.h"
在HelloWorldScene.cpp中:

NativeHelper::showInterstitial();

例如,您可以使用相同的方法显示/隐藏/更改admob横幅的位置(但是它有缺陷,所以我使用广告中介)。

很抱歉,我的博客文章没有帮助。你能链接到你正在寻找的一些资源吗?AdMob Interstituals的SDK说明将是一个开始的好地方。这很有帮助,但我有一些误解。在这里。哇,做得很好。谢谢,这似乎有效,但我有一些问题。本指南适用于cocos2dv3.x?我使用的是cocos2d 2.x,它给了我一个错误:输出文件名PhoneDirect3DXamlAppComponent.winmd应该与.winmd文件中的一种类型的名称空间cocos2d匹配。我应该移植到cocos3.x吗?或者只使用PhoneDirect3DXamlAppComponent名称空间而不是cocos2d?是的,这适用于cocos2d-x 3.0。我不使用2.0版本,但我认为更改名称空间应该可以解决这个问题。您知道在cocos2d-X3.6中集成广告的方法吗?新模板不提供C#项目,XAML文件与使用cocos控制台创建项目不同。应该和以前一样。是的,这只适用于3.x的早期版本。从3.4或3.5左右的某个点开始,COCOS2D—X项目从C++/CX(C++和C++)项目变成了一个C++项目。可以为当前COCOS2D-X版本3.7创建C++ /CX项目,但也可能有一个很好的理由,它被移除并被C++项目取代。我请微软Cocos2d-x公司的Dale Stammen澄清一下,他是否知道为什么要从Cocos2d-x中删除C++/CX项目:
NativeHelper::showInterstitial();