2012-04-07 2 views
1

Возможно, большинство из вас знает AdDuplex, чтобы перекрестно продвигать приложения и игры WP7. Этот движок рекламы содержит два SDK, один для игр XNA и другой для приложений Silverlight.Использование AdDuplex в гибридном приложении XNA - Silverlight WP7

У меня есть гибридная игра SL-XNA, и я не могу найти способ заставить рекламу работать в такой среде. Я смог отобразить объявление с использованием Silverlight UIElementRenderer в графической среде XNA, но я не могу найти способ обработать щелчок по нему.

Это как 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 в таких условиях. Любая идея о том, как это сделать? Благодарю.

ответ

0

Я использую AdDuplex в своем гибридном приложении SL-XNA «Yaht 3D» без проблем. Похоже, вы все делаете правильно. Просто отпустите элемент управления Silverlight в свой XAML (используя свой собственный идентификатор приложения).

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

и использовать UIElementRenderer в код внутри OnDraw метода

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

Контроль AdDuplex должен обрабатывать клики для вас.

+0

спасибо. Я делаю это, и я действительно вижу объявление, но когда пользователь нажимает на него, ничего не происходит. То, как вы делаете, даст вам впечатления, но не щелчки, я думаю. – xus

+0

Клики работают точно.Возможно, есть что-то еще, что мешает вашему элементу управления AdDuplex получать событие click, возможно, что-то в вашем XAML? Не могли бы вы разместить свой XAML? – kelbicom

+0

ok, я просто добавил xaml, даёт вам какое-либо представление о том, что не так? благодаря! – xus

1

Не видя кода позади и полного XAML, я не могу сказать точно, но ключ находится в Margin = "0,0,0,7,000". Я предполагаю, что вы рисуете элемент управления AdDuplex в другом месте, где он находится на самом деле.

Если вы инициализация UIElementRender что-то вроде этого

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

и рисунка как этого

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

то, что могло бы объяснить проблему. Вместо этого установите параметр Margin = "0" в элементе управления AdDuplex (убедитесь, что он виден на странице) и инициализируйте ваш UIElementRenderer с помощью корневого элемента на вашей странице. По умолчанию это грид, называемый «root», но вы, возможно, изменили его на что-то другое.

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

Код выведения должен быть таким же, как указано выше. Теперь элемент управления AdDuplex должен находиться в том же месте, что и фактический элемент управления, а нажатие на него должно запускать веб-браузер.

Возможно, вы захотите подправить это решение, если вы не хотите рисовать растровое изображение 480,800 каждый кадр, но по крайней мере он будет проверять, исправляет проблему.

Смежные вопросы