为啥我的背景音乐没有循环播放?

Posted

技术标签:

【中文标题】为啥我的背景音乐没有循环播放?【英文标题】:Why is my background music not looping?为什么我的背景音乐没有循环播放? 【发布时间】:2013-12-02 14:25:32 【问题描述】:

有人知道为什么这段代码不能让我的背景音乐不断循环吗??

正在加载内容:

backgroundMusic.Play(0.3f, 0.0f, 0.0f); //play background music (first float number is for volume)

更新中:

SoundEffectInstance instance = backgroundMusic.CreateInstance(); //creates instance for backgroundMusic
instance.IsLooped = true; //states that instance should loop meaning background music loops and never stops

提前致谢

编辑:我现在有了这个:

内容加载:

        Song backgroundMusic = Content.Load<Song>("backgroundMusic");

然后分别:

    public void PlayMusicRepeat(Song backgroundMusic)
    

        MediaPlayer.Play(backgroundMusic);
        MediaPlayer.IsRepeating = true;
    

【问题讨论】:

【参考方案1】:

如果你需要管理背景音乐,你应该使用Song类,SoundEffect应该只用于音效。 像这样的:

public void PlayMusicRepeat(Song song)

    MediaPlayer.Play(song);
    MediaPlayer.IsRepeating = true;

当然加载应该是这样的:

Song music = Game.Content.Load<Song>("background");

【讨论】:

请看上面的代码编辑,我认为你的意思是这样的吗? 没有。您仍在使用SoundEffectSoundEffectInstance,但如果您想管理音乐,您应该使用Song 类。 对不起,我没有正确阅读答案。再次编辑它。 你在做SoundEffectInstance instance = backgroundMusic.CreateInstance();,这里假设backgroundMusicSoundEffect,那怎么可能也是Song呢? 请检查我更新的代码,这看起来对你有用吗?我现在根本没有音频输出?【参考方案2】:

您正在播放 SoundEffect,但循环 SoundEffectInstance,这是行不通的。 根据 Microsoft (http://msdn.microsoft.com/en-us/library/dd940203.aspx) 的这篇文章,您必须在播放声音之前设置 IsLooped 属性。

所以你的代码应该是这样的:

在加载内容中:

instance = backgroundMusic.CreateInstance(); 
instance.IsLooped = true;

更新中:

if(instance.State == SoundState.Stopped)
    instance.Play();

【讨论】:

以上是关于为啥我的背景音乐没有循环播放?的主要内容,如果未能解决你的问题,请参考以下文章

iOS+Swift:为啥音乐不能在 iPad 上播放?

html5播放音乐为啥苹果手机为啥不能播放

如何阻止音乐曲目在 Libgdx 中循环播放

问一下大家为啥我发给别人的ht ml文档没有音乐我编辑的是有音乐在我这里也可以播放。

在 viewDidLoad Swift 3 中循环播放音频音乐的问题

为啥同一台电脑上能同时运行多个音乐播放程序?