当前位置: 首页 > 知识库问答 >
问题:

声音管理器2和播放列表自动播放下一首歌曲不起作用

况喜
2023-03-14

我有一个创建和播放我播放列表的文字JS对象。在HTML页面中,我有一个包含我所有曲目的列表。当我点击某些曲目时,一切正常,但当我点击一个曲目,等待曲目结束时,下一个曲目就不播放了。这是我的代码的部分:

   playSound : function(track){
        console.log("Play this song");



        DG_PLAYER.TrackPlaying = track;

        soundManager.destroySound('MySoundID');



                DG_PLAYER.Sound =   soundManager.createSound({
                                        id:'MySoundID',
                                        url:track.sound,
                                        autoLoad: true,
                                        autoPlay: true,
                                        onload: function() { console.log('sound loaded!', this); },
                                        onfinish: function(){
                                            console.log('end song');
                                    var nextSong = DG_PLAYER.getNextSong();
                                            DG_PLAYER.playSound(nextSong);
                                        },
                                        onfailure : function(){console.log('some error')},
                                        whileloading : function(){console.log('i m loading');},
                                        whileplaying : function(){console.log('i m playing');}
                                    });


    },

还有一件事,当第一首歌曲结束并调用下一首歌曲的播放时,曲目没有加载(onload事件没有消息返回)。谢谢,对不起我的英语不好。A.

好的,我试着在设置上添加“FlashVersion:9”,这就解决了这个问题,但是在IE 8上我现在有了un action script消息。

共有1个答案

龙安阳
2023-03-14

来自SoundManager2的修订历史记录:

Adobe于2013年2月26日发布的Flash Player 11.6.602.171引入了SM2基于API的默认Flash 8(FlashVersion:8)JS/Flash交互的问题,其中从诸如onfinish()之类的回调调用的SM2方法将无法工作。这主要是打破了按顺序播放声音、按顺序加载一系列声音等方法。(有关更多信息,请参阅讨论。)

请注意,这不影响正在使用SoundManager.setup({FlashVersion:9})的情况;但是,SM2在默认情况下确实使用FlashVersion:8

具体地说,Flash启动的事件(如声音整理)对SM2 API进行Flash->JS调用,随后调用用户指定的事件处理程序。如果用户指定的SM2onfinish()处理程序立即调用进行js->闪存调用的SM2方法,如play(),则此调用要么以静默方式失败,要么被阻塞。使用类似回调模式的其他JS+Flash库也可能受到影响,如果它们的SWF是针对Flash8 API构建的。

怀疑是时序或递归/堆栈问题,发现向用户指定的SM2回调(如onfinish())引入settimeout(callback,0)恢复了顺序/播放列表功能。

Adobe于2013年12月3日发布的Flash Player 11.6.602.180也表现出同样的行为。为了避免额外的攻击,SM2将此应用于所有基于Flash8的API回调,而不管安装了什么版本的Flash Player。预计不会因这一变化而出现倒退。

或者,使用SoundManager.Setup({FlashVersion:9})也可以避免此问题,因为基于Flash 9的API似乎不存在此问题。

 类似资料:
  • 我正在学习如何为某些曲目创建媒体播放器的教程...每首歌都按我的要求播放然后停止...我想让整个播放列表播放...那是为了在前一个赛道结束后,下一个赛道自动开始... 多谢...

  • 我正在制作音频播放器(android)。问题是我什么时候启动我的应用程序

  • 我正在编写一个,其中我提供了功能,几乎满足了我的需求,但面临一些小问题。 我是如何实现我的音乐播放器的: 正在列出SD卡中可用的音频歌曲(路径类似:) 一旦用户点击任何音频,然后启动媒体播放器 在媒体播放器屏幕中,我为用户提供了返回音频列表的导航 用户返回,现在选择了一些其他歌曲来听(这里我面临的问题是,用户将可以播放新选择的歌曲,但也会播放旧歌曲,而一次只能播放上一次选择的歌曲,但在我的情况下,

  • null 附加注释 从列表中删除歌曲时,不能在数组中留下空点。你将如何处理这件事?不要使用ArrayList来管理您的歌曲,您必须使用数组。不要为此赋值扩展ArrayList。我们稍后会这样做;-)如果您想这样做,您可以自由地编写额外的“帮助器”方法。我列出的方法是作业的最低要求。如果有帮助,您可以随时添加更多的方法。 为歌曲、播放列表和驱动程序类提交什么.java文件。 驱动程序类 我的问题是我

  • 本文向大家介绍Android音乐播放器制作 点击歌曲实现播放(二),包括了Android音乐播放器制作 点击歌曲实现播放(二)的使用技巧和注意事项,需要的朋友参考一下 上次我们实现了把手机里的音频扫描到,然后放在list集合里面,用ListView展示在手机界面上,如果没有看过的可以去看看本人的博客:Android音乐播放器制作(一)扫描本地音乐显示在手机上 这次是在上一次的基础上直接继续写代码,

  • 我制作了一个HTML5 iPod。 你可以在这里试试。 http://inventikasolutions.com/demo/iPod 在PC上使用Chrome时。如果我导航到一首歌,它会自动开始播放。但在Android上使用Chrome时,它不会播放这首歌。我必须再次按下播放/暂停按钮才能播放音频。 这是当您选择要播放的歌曲时运行的代码: 这是播放/暂停代码。 它是否与“autoplay”变量有