1

可以证明,你们中的大多数人都知道 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。关于如何做的任何想法?谢谢。

4

3 回答 3

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 个位图,您可能需要调整此解决方案,但至少它会测试它是否解决了问题。

于 2012-04-12T19:17:16.680 回答
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 控件应该为您处理点击。

于 2012-04-07T10:43:16.243 回答
0

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

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

谢谢!

于 2012-04-12T19:21:54.213 回答