言われたことに従うようにしています。個人的には別の設定をしたかったのですが、それについては後で説明します。あなたの説明に似たセットアップがあり、Tapjoy のビデオで動作します。
まず、Silverlight ゲームだとおっしゃっていたので、VS 2010 で Silverlight For Windows Phone テンプレートの下に新しい Windows Phone アプリケーション プロジェクトを作成しました。
ディスパッチャーのセットアップ:
次のクラスをプロジェクトに追加しました (通常、この msdn の例から XNAFrameworkDispatcherService.cs と呼ばれます: http://msdn.microsoft.com/en-us/library/ff842408.aspx )
public class XNAFrameworkDispatcherService : IApplicationService
{
private DispatcherTimer frameworkDispatcherTimer;
public XNAFrameworkDispatcherService()
{
this.frameworkDispatcherTimer = new DispatcherTimer();
this.frameworkDispatcherTimer.Interval = TimeSpan.FromTicks(333333);
this.frameworkDispatcherTimer.Tick += frameworkDispatcherTimer_Tick;
FrameworkDispatcher.Update();
}
void frameworkDispatcherTimer_Tick(object sender, EventArgs e)
{
FrameworkDispatcher.Update();
}
void IApplicationService.StartService(ApplicationServiceContext context)
{
this.frameworkDispatcherTimer.Start();
}
void IApplicationService.StopService()
{
this.frameworkDispatcherTimer.Stop();
}
}
このサービスを開始するには、App.xaml にサービスが追加されていることを確認してください。次のように、名前空間を指す Application 要素に属性を追加します。
xmlns:s="clr-namespace:WindowsPhoneApplication;assembly=WindowsPhoneApplication">
次に、ブロック内に次を追加します。
<s:XNAFrameworkDispatcherService />
音楽を再生:
次に、ループする音楽ファイルの再生について説明します。MainPage.xaml.cs では、Microsoft.Xna.Framework.Media.MediaPlayer を使用して、ページに移動したときにループするように Microsoft.Xna.Framework.Media.Song をセットアップしました。
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
Tapjoy.TapjoyConnect.Instance.RequestTapjoyConnect("your-app-id", "your-secret-key");
try
{
Song song = Song.FromUri("example", new Uri("/example.wma", UriKind.Relative));
MediaPlayer.IsRepeating = true;
MediaPlayer.Play(song);
}
catch (Exception)
{
System.Diagnostics.Debug.WriteLine("Can't load sound");
}
}
また、ページから離れたときに音楽の再生を停止するように設定しました。
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
MediaPlayer.Stop();
}
次に、Tapjoy オファー ウォールを起動するボタンを作成しました。
private void button1_Click(object sender, RoutedEventArgs e)
{
Tapjoy.TapjoyConnect.Instance.ShowOffers();
}
概要:
ここで何が起こるかというと、アプリケーションが起動すると、約 30 fps で動作する XNAFrameworkDispatcherService が起動されます。これにより、XNA Framework キューにあるメッセージがディスパッチされます。これは、XNA からのオーディオ/メディア サービスを使用している Silverlight アプリケーションでのみ必要です。
MainPage に移動したら、Connect 呼び出しで Tapjoy に ping を実行し、Song をロードしてループします。
これで通常のゲームプレイが進行し、Show Offers ボタンがクリックされると、Tapjoy はあなたのページから離れてナビゲートし、イベントからのナビゲートを発生させ、MediaPlayer はあなたの曲を停止します。
ゲームのアイデア:
新しいプロジェクトを作成し、「Windows Phone Silverlight および XNA アプリケーション」オプションを使用することを検討してください。VS2010 は、コンテンツ マネージャーが既にセットアップされた空のプロジェクトを作成するため、XNA パイプラインでサウンドと画像を使用できます。
Tapjoy はこれらの問題にも対応しています。support@tapjoy.com にメールするか、 https ://groups.google.com/group/tapjoy-developer?hl=en の Tapjoy 開発者グループを使用してください。