首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视频播放的tapjoy问题

视频播放的tapjoy问题
EN

Stack Overflow用户
提问于 2012-06-01 15:15:03
回答 1查看 551关注 0票数 0

我有一个Windows phone游戏,使用Silverlight构建。在这个游戏中,我想添加TapJoy。我已经下载了他们最新的SDK,并按照他们的所有步骤将其集成到我的应用程序中。

在游戏中,我使用silverlight作为主框架,使用Global Media元素播放连续的背景音乐。我正在使用(Microsoft.Xna.Framework.Media) (Microsoft.Xna.Framework)名称空间。使用它们,我使用以下方法播放连续的背景声音。DispatcherTimer和FrameworkDispatcher.Update

现在,当我点击joy按钮打开他们的优惠时,他们加载得很好;但是,当我打开优惠中的视频时,他们显示以下错误“视频无法播放,请重试”。

基于一些研究和学习,我尝试了一些东西,发现: a)我需要设置媒体元素和DispatcherTimer为空。b)应用程序在后台发送(停用),然后我再次打开它(激活),视频正常。我检查了一下,发现Media Element和DispatcherTimer都正确地设置为null。

但如果我只执行第一步,并且不在后台发送应用程序,则media元素和dispatcherTimer不会设置为空。

有没有人可以帮助我,并在下面回答我

a)我对此做了什么工作吗?b)我可以做些什么,当点击快乐按钮时,我的应用程序会自动发送到后台,因为这可以解决问题。c)在将value设置为null之后,我使用了gc.collect(),但它仍然没有被销毁。

提前谢谢你,大卫·雅各布。

EN

回答 1

Stack Overflow用户

发布于 2012-06-03 02:51:13

我正在试着理解你所说的话。我个人会以不同的方式设置它,但我将在稍后讨论这一点。我有一个类似于你的描述的设置,它适用于Tapjoy的视频。

首先,您提到这是一个Silverlight游戏,所以我在VS2010中的Silverlight For Windows Phone模板下创建了一个新的Windows Phone应用程序项目。

设置调度程序:

我在我的项目中添加了以下类(通常在这个msdn示例中称为XNAFrameworkDispatcherService.cs:http://msdn.microsoft.com/en-us/library/ff842408.aspx)

代码语言:javascript
复制
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元素添加一个指向您的命名空间的属性,如下所示:

代码语言:javascript
复制
xmlns:s="clr-namespace:WindowsPhoneApplication;assembly=WindowsPhoneApplication">

然后在你的代码块中添加以下内容:

代码语言:javascript
复制
<s:XNAFrameworkDispatcherService />

播放音乐:

现在播放一个循环的音乐文件。在MainPage.xaml.cs中,我使用Microsoft.Xna.Framework.Media.MediaPlayer设置了一个Microsoft.Xna.Framework.Media.Song,以便在导航到页面时执行循环。

代码语言:javascript
复制
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");
    }
}

我还将其设置为当页面被导航离开时停止播放音乐。

代码语言:javascript
复制
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);

    MediaPlayer.Stop();
}

然后,我创建了一个按钮来启动Tapjoy Offer墙。

代码语言:javascript
复制
private void button1_Click(object sender, RoutedEventArgs e)
{
    Tapjoy.TapjoyConnect.Instance.ShowOffers();
}

摘要:

现在发生的情况是,当您的应用程序启动时,它会以大约30fps的速度启动XNAFrameworkDispatcherService。这将为您分派XNA Framework队列中的消息。只有在使用XNA音频/媒体服务的silverlight应用程序中才需要此功能。

当导航到MainPage时,您可以使用Connect调用ping Tapjoy,然后加载您的Song to循环。

正常的游戏现在可以进行了,当点击Show Offers按钮时,Tapjoy会离开你的页面,导致从一个事件导航到另一个事件,MediaPlayer会停止你的歌曲。

你的游戏创意:

您可能需要考虑创建一个新项目并使用"Windows Phone Silverlight和XNA应用程序“选项。VS2010将创建一个已设置好的内容管理器的空白项目,因此您可以在XNA管道中使用声音和图像,我发现这更容易。

祝你好运,记住Tapjoy也为这些问题提供了支持。只需发送电子邮件到support@tapjoy.com,或使用Tapjoy开发人员小组:https://groups.google.com/group/tapjoy-developer?hl=en

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10846001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档