Windows-Phone-7:检查 soundEffectInstance 的实例是不是正在播放

Posted

技术标签:

【中文标题】Windows-Phone-7:检查 soundEffectInstance 的实例是不是正在播放【英文标题】:Windows-Phone-7: Check if an instance of soundEffectInstance is playingWindows-Phone-7:检查 soundEffectInstance 的实例是否正在播放 【发布时间】:2011-08-14 11:01:08 【问题描述】:

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

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

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();
    

有什么想法吗? 提前谢谢了! 会。

【问题讨论】:

【参考方案1】:

对于 XNA 应用程序:

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

对于 Silverlight:

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

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

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

【讨论】:

我有一个基于您的第二个想法的应用程序。基本上我建立了一个队列,它使用具有声音持续时间的计时器来控制队列流。您需要确保以稳健的方式构建它,处理错误并正确控制计时器和事件。 我有同样的想法,但老实说希望有一种方法可以在没有自定义变量的情况下解决它,特别是因为我有多种不同持续时间的不同声音......这意味着很多自定义计时器。不过会试一试。谢谢【参考方案2】:

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

// 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;
            
        

【讨论】:

以上是关于Windows-Phone-7:检查 soundEffectInstance 的实例是不是正在播放的主要内容,如果未能解决你的问题,请参考以下文章

Sound Pool 只播放一次声音

如何检索特定目录中的.wav文件列表[重复]

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support

Flutter Error: Cannot run with sound null safety, because the following dependencies don‘t support(代