1

AdDuplex が WP7 のアプリやゲームをクロス プロモーションしていることは、おそらくほとんどの人が知っているでしょう。この広告エンジンは、XNA ゲーム用と Silverlight アプリ用の 2 つの SDK を提供します。

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 を初期化します。デフォルトでは、これは「ルート」と呼ばれるグリッドですが、これを別のものに変更した可能性があります。

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

描画コードは上記と同じである必要があります。AdDuplex コントロールは実際のコントロールと同じ場所に描画され、それをタップすると Web ブラウザーが起動します。

フレームごとに 480,800 のビットマップを描画したくない場合は、このソリューションを調整することをお勧めしますが、少なくとも問題が解決するかどうかをテストします。

于 2012-04-12T19:17:16.680 に答える
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 に答える
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 に答える