JavaScript音频库 Howler.js 当前已升级到2.0版本。该版本的更新中包括了“一系列的功能添加与改进”。
Howler.js的作者 James Simpson ,也是游戏开发工作室Goldfire Studios的创建者,指出该版本是一次“彻底地改写”,并已完全地兼容HTML5和Web Audio API。Simpson随即指出这归功于数十名项目贡献者的工作。
Simpson在博客帖子“ Howler.js 2.0版发布了 ”中,将howler.js描述成“模块化的程序库”。文中提及howler.js考虑到去实现“可扩展添加更多高级功能的精益内核,例如若干支持Web Audio API扩展部分(空间音频、空间滤波器)的可用工具”。
“现在Howler.js已经模块化了。该内核体现了howler.js的初始目标,”Simpson说,“该音频库提供使用Web Audio API的空间插件,这样增加了对空间和立体声支持。”
2.0版本的最大改进是使用一种三层实现方法解决了在多种声音回放时的混淆问题,这也是1.X版本系列中的一个显著痛点。
这个改进需要开发人员更改使用howler.js处理音频的方法。Simpson指出:
当前版本中的概念包括:全局(Howler)、组(Howl)和声音个体(Sound)。为对回放具有更好的控制,无论实现中是否使用了Sprite类,每个播放的声音都应去获取其可操控的Sound对象。这样,对于此后同一组中的一个或多个声音都可使用Howl对象的方法调用。
Howler (全局) -> Howl(组) -> Sound(个体)
此外,在这次howler.js的重大升级中所提供的新方法包括:设置具有一旦触发就可自动自我移除特性的事件监听器的once方法、对当前正在播放的声音返回真值的playing方法、返回音源持续时间的duration方法、返回Howl对象加载状态的state方法,以及全新实现的全局unload方法,该方法卸载所有活动Howl对象并重置AudioContext对象,用于内存的清理。
Howler 2.0版本还实现了对一些倍受欢迎功能的支持,包括:对Dolby音频和CAFF音频文件回放的支持,对除了.weba类型文件以外的.webm类型文件的支持。
版本中还实现了一些howler.js补丁,意图解决该音频库中的若干程序缺陷,其中包括对ext选项的改进,这使得该选项更加适用于音频流的播放(并在版本中提供了例子SoundCloud)。此外,Howler.js 2.0版解决了unload方法使用中潜在的内存泄漏问题,并且该JavaScipt库会自动回退到HTML5 Audio以兼容HTTPS页面内的HTTP文件的加载。
在2.0版本的所有突破性更新中,一个重要更新是play方法不再以回调函数形式使用,而是即时返回当前回放声音的标识符。Simpson指出这意味着play方法将不能再以链接方式使用,但是他也阐明对其它方法的调用并未改变。
//获取给定回放声音的标识符。 var id = sound.play(); //暂停回放。 sound.pause(id);
另一个重要革新是新版本中弃用了fadeIn和fadeOut方法,以支持单一的fade方法。
//声音淡入。 sound.fade(0, 1, 1000); //一旦上一个音频淡化结束,声音淡出。 sound.once('fade', function(){ sound.fade(1, 0, 1000); });
可在 此处 查看howler.js 2.0版的完整的更新日志。Howler.js使用 MIT许可 发布,当前已经得到包括谷歌、迪斯尼、乐高、Mozilla以及NASA等的应用。
查看英文原文: Audio Library Howler.js Has 2.0 Release to Make Some Noise About
感谢夏雪对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。