由于项目需要多个音效要串联播放,所以需要判断上个音效是否播放完毕再播放下一个,所以,强烈建议音效增加判断音效是否播放完的api,html5和cocos2dx版本都加上。
楼主,这个功能实现了吗?
3.3会有新的声音引擎,会新增很多的接口。
声音引擎不改的话 是不太好加的。。。我用的是3.2版本引擎 我前几天就试过自己加了一个isEffectPlaying方法 Win32平台没问题 但是android平台下面没法实现这个功能,如果是背景音效,底层调用安卓api使用的是MediaPlayer,这玩意有一个接口可以判断是否音效正在播放,所以背景音效播放的时候有这么个判断接口;问题来了,播放effect的时候底层调用的安卓api是用的SoundPool的方法,你可以去查一下SoundPool的安卓api,特么的,没这个接口!!! 因为可以存在一个音效同时播放多个的情况,声音引擎底层实现是用HashMap,我找到了一个叫做mPathStreamIDsMap的东西,以为每播放一个音效,就把音效放到这个HashMap里面去,播放完了以后再删掉,果断通过判断这玩意里面是否存在该音效ID来判断该音效是否播放,事实证明我想错了,只要加载了一个音效到声音缓存,就会把音效存到mPathStreamIDsMap里面,只有调用了stopEffect以后才会从mPathStreamIDsMap里面删除,否则,不管音效播完木有,都不会从mPathStreamIDsMap里面删除这个音效,也就是说,木有办法判断。。。。节哀吧。。。我现在是用一个很恶心的定时器去实现这个功能的,播放音效的时候 开一个局部定时器,定时器跑完再才让播放下一个。。。
改了半天源代码,也没改出来个所以然来,特别是在IOS上运行时,各种坑
— Begin quote from ____
引用第4楼gogozhang12于2014-10-13 17:32发表的 :
改了半天源代码,也没改出来个所以然来,特别是在IOS上运行时,各种坑 http://www.cocoachina.com/bbs/job.php?action=topost&tid=181997&pid=1074212
— End quote
3.3直接提供了一个新的音效引擎,不用纠结了
3.2版本到3.3跨度大吗?
看来3.3还是没有判断音效是否播放完的api
我已经放弃判断了