在XNA中使用AdDuplex - Silverlight WP7混合应用程序

时间:2012-04-07 09:32:06

标签: silverlight windows-phone-7 xaml xna

值得一提的是,大多数人都知道AdDuplex可以交叉推广WP7应用和游戏。该广告引擎提供了两个SDK,一个用于XNA游戏,另一个用于Silverlight应用。

我有一个SL-XNA混合游戏,我找不到让广告在这样的环境中工作的方法。我已经能够在XNA图形环境中使用Silverlight UIElementRenderer呈现广告,但我找不到处理点击的方法。

这就是XAML的样子:

<Grid Name="root" Margin="0,0,0,7000" Width="480" Height="90" Background="Black" >
    <adduplex:AdControl x:Name="adDuplex" xmlns:adduplex="clr-namespace:AdDuplex;assembly=AdDuplex.AdControl.Silverlight"
        AppId="10675" 
    />
</Grid>

我听说有些人在这样的环境中使用过adDuplex。有什么想法怎么做?感谢。

3 个答案:

答案 0 :(得分:1)

没有看到背后的代码和完整的XAML我不能肯定地说,但线索是在Margin =“0,0,0,7000”。我的猜测是你将AdDuplex控件绘制在与实际位置不同的位置。

如果你正在初始化这样的UIElementRender

    renderer = new UIElementRenderer(adDuplex, 480, 90);

并且像这样画画

    renderer.Render();
    spriteBatch.Begin();
    spriteBatch.Draw(renderer.Texture, Vector2.Zero, Color.White);
    spriteBatch.End();
那么那可以解释这个问题。而是在AdDuplex控件上设置Margin =“0”(确保它在页面上可见)并使用页面上的根元素初始化您的UIElementRenderer。默认情况下,这是一个名为“root”的网格,但您可能已将其更改为其他内容。

renderer = new UIElementRenderer(root, 480, 800);

绘图代码应与上述相同。 AdDuplex控件现在应该在与实际控件相同的位置绘制,并且点击它应该启动Web浏览器。

如果你不想每帧绘制480,800位图,你可能想要调整这个解决方案,但至少它会测试它是否解决了这个问题。

答案 1 :(得分:0)

我在我的SL-XNA混合应用程序“Yaht 3D”中使用AdDuplex没有任何问题。听起来你正在做的一切都是正确的。只需将Silverlight控件放入您的XAML(使用您自己的应用程序ID)。

        <adduplex:AdControl xmlns:adduplex="clr-namespace:AdDuplex;assembly=AdDuplex.AdControl.Silverlight"
                        AppId="1234"/>

并在OnDraw方法内的代码中使用UIElementRenderer

    elementRenderer.Render();
    spriteBatch.Begin();
    spriteBatch.Draw(elementRenderer.Texture, Vector2.Zero, Color.White);
    spriteBatch.End();

AdDuplex控件应该为您处理点击。

答案 2 :(得分:0)

我使用了Nick Gravelin的这个助手课程,现在它就像一个魅力:

http://blogs.msdn.com/b/nicgrave/archive/2011/09/26/change-in-uielementrenderer-behavior-and-update-to-uielementrendererhelper.aspx

谢谢!