我正在努力按照你所说的去做。我个人会以不同的方式设置它,但我稍后会谈到。我的设置与您的描述相似,它适用于 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 框架队列中的消息。这仅在使用来自 XNA 的音频/媒体服务的 silverlight 应用程序中需要。
当导航到 MainPage 时,您使用 Connect 调用 ping Tapjoy,然后加载您的歌曲以循环播放。
正常的游戏现在可以进行了,当点击 Show Offers 按钮时,Tapjoy 将离开您的页面,导致从事件导航到触发,并且 MediaPlayer 将停止您的歌曲。
游戏创意:
您可能要考虑创建一个新项目并使用“Windows Phone Silverlight 和 XNA 应用程序”选项。VS2010 将创建一个已设置内容管理器的空白项目,因此您可以使用 XNA 管道使用声音和图像,我发现这更容易。
祝你好运,记住 Tapjoy 也为这些问题提供支持。只需发送电子邮件至 support@tapjoy.com,或使用 Tapjoy 开发人员组:https ://groups.google.com/group/tapjoy-developer?hl=en