首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows-Phone-7:检查是否正在播放soundEffectInstance实例

Windows-Phone-7:检查是否正在播放soundEffectInstance实例
EN

Stack Overflow用户
提问于 2011-08-14 19:01:09
回答 2查看 977关注 0票数 2

我有一个可以控制音效的按钮。单击按钮时,声音应开始播放。如果您在声音仍在播放时单击它,它应该会停止声音。如果您在声音停止播放后单击它,声音应该会重新开始播放。

我已经尝试过了,但我错误地使用了SoundState方法,因为它不起作用:

代码语言:javascript
复制
public void playGenericSound(string fileName)
{
    if (playingSound.State != SoundState.Playing)
    {
        using (var stream = TitleContainer.OpenStream(fileName))
        {
            var effect = SoundEffect.FromStream(stream);
            playingSound = effect.CreateInstance();
            FrameworkDispatcher.Update();
            playingSound.Play();
        }
    }
    else
    {
        playingSound.Stop();
    }
}

有什么想法吗?首先要感谢大家!将要。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-14 20:10:36

对于XNA应用程序:

在()方法中,检查音效的playingSound.State字段,如果播放已经停止,则播放另一个音效。

对于Silverlight:

这部分有点棘手,因为SoundEffectInstance是作为XNA的一部分设计的。例如,您可以使用计时器创建自己的循环,并在事件处理程序中添加状态检查逻辑。

第二个想法是使用计时器,它的时间间隔设置为播放声音的持续时间,并添加一个类似于bool isPlaying的标志。第一次播放时,将isPlaying标志设置为true并启动计时器。在计时器处理程序中,将isPlaying标志设置为false。每次按下按钮时,检查isPlaying标志。换句话说,创建您自己的播放状态逻辑。

您可以组合使用这些方法。

票数 2
EN

Stack Overflow用户

发布于 2012-02-24 01:52:35

我想我会把我所做的发布在我正在为某人工作的一个程序中。

代码语言:javascript
复制
// Play Audio File and allow stop
        if (new Rectangle(rV.X, rV.Y, rect.Width, rect.Height).Contains(mosX, mosY) && mouseClick)
        {
            if (driversmeeting.State != SoundState.Playing && !globalAudioPlaying)
            {
                globalAudioPlaying = true;
                driversmeeting.Play();
            }
            else if (driversmeeting.State == SoundState.Playing)
            {
                driversmeeting.Stop();
                globalAudioPlaying = false;
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7056393

复制
相关文章

相似问题

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