流畅播放你的音乐

by wersling on August 14th, 2007, under Article

在写音乐播放器的时候,我们一般都会设置一个缓冲时间,当缓冲区满了的时候,音乐开始播放。但是,由于网络速度不够快,常常会在播放途中出现缓冲,导致音乐中断,这个一个非常差的音乐体验。因为她不完整了,如何使用户听到完整的音乐?一个最简单的办法就是把所有数据下载下来过后再播放,但是随之而来的是用户可能会等得发狂,尤其是对于那些速度不错的用户。

因此,采用一种新的计算方式,确保加载一定的数据之后我们就开始播放,并确保在播放过程中,缓冲区一直有数据可读.此方法在制作MTV的Flash中,我有说明过,但是音乐存在一个问题:在没有下载完之前,你不知道整个音乐的长度——除非你有其他数据支持.那么我们得采用一种方式来获得:通过计算已下载数据的大小和时间长度,来判断总时间长度,因为大小一般和时间成正比,有点误差,但不大。具体如何实现,请看下面的代码:

首先我们在开始加载时就要得到一个开始的加载时间:

var startLoadTime:uint = getTimer(); player.addEventListener(ProgressEvent.PROGRESS,progressHanlder); player.load(new URLRequest(‘url’));

然后在每次获得新进度时如此判断:

private function progressHanlder(e:ProgressEvent):void{ this.dispatchEvent(e.clone()); if(player.length > 5000){ var useTime:uint = getTimer() – startLoadTime; var music_totle_time:Number = (e.bytesTotal/e.bytesLoaded)*player.length; var expectedTime:Number = (useTime/e.bytesLoaded)*e.bytesTotal; if((expectedTime – useTime) < music_totle_time && (useTime > 3000 || e.bytesTotal == e.bytesLoaded)){ this.play(); player.removeEventListener(ProgressEvent.PROGRESS,progressHanlder); } } }

这个方式的好处是:以最快的速度播放音乐,并确保中间不进行数据缓冲,使音乐流畅的播放。

同时也存在一些问题:

  • 如果用户之前有下载过这个音频的一部分,那么计算将不在准确;
  • 如果用户的网速不稳定,那么也会导致不准确(可以通过设置更长的初始计算时间来平衡).

, , 4 comments

《变形金刚》原声大碟

by wersling on August 14th, 2007, under Music

专辑打包下载:下载地址

专辑:Transformers Soundtrack
发行:Warner Bros.
日期:July 3, 2007

专集曲目:

  1. Linkin Park – What I’ve Done [MV]
  2. Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

  3. Disturbed – This Moment
  4. Goo Goo Dolls – Before It’s Too Late (Sam and Mikaela’s Theme)
  5. Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

  6. HIM – Passion’s Killing Floor
  7. Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

  8. Styles Of Beyond – Second To None
  9. Armor For Sleep – End Of The World
  10. Idiot Pilot – Retina and the Sky
  11. Julien-K – Technical Difficulties
  12. Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

    [MV]

, , , 2 comments

Flash弹出浏览窗口方法集合

by wersling on July 31st, 2007, under News

adobe中有篇文章介绍Flash弹出浏览窗口的方法,相信开发flash常常遇到,我也是,最近就被这个方法在IE7中的异常搞了很久。因此,提出几点提醒下自己:

  1. as3中getURL变成navigateToURL。
  2. 在使用JS方法是,window.open 会导致Flash页面跳转,必须加”void(0)”,或者 void(window.open(…));。
  3. 执行js是,window不能设置为”_blank”。
  4. 其他请查看adobe的文章.

, , , , , 1 comment

ASSchema – 将xsd文件转为ActionScript3代码

by wersling on July 20th, 2007, under News

最近在开发一个AIR应用程序,在不久的将来大家就可以使用到它,目前还在内部测试阶段。先给出一点介绍:

ASSchema是一个AIR应用程序,它可以将XML Schema文档自动转为Action Script 3代码。

界面

在多数情况下,Action Script 3读取XML文档节点内容必须采用XML对象和XMLList对象来完成,除非您有编写其他的解析程序(如:XMLTabel、AStoObject)。否则,您不得不在编写代码时,常常要打开对应的XML文档来确定要读取的内容和位置,因而,由于粗心和对XML结构的不熟悉常常会导致一些潜在的程序缺陷。

如果项目需求发生变化,不得不修改之前所定义的XML文档,那么,随之带来的是您必须查找代码中解析XML的地方,对其进行逐一的更改。

使用ASSchame,可以将原来需要手动编写解析XML的代码生成出来,在项目中通过实例化一个对象,来获取XML文档中所有的节点值,而这些,都是自动完成的。如果XML定义有改变,您只需要重新生成一次,并替换原有代码,我相信,您的开发工具会通过错误信息告诉您所有的变动——您只要一一修改就可以完成所有的变更。

Demo:通过 XSD文件 (532) 转为 asschema_as3代码 (503).

, , , , , , 1 comment

Adobe Flash Player 9.0.47发布

by wersling on July 11th, 2007, under News

9.0.47所有版本下载地址

主要更新了音频、视频和全屏中出现的问题,查看更新记录(en)

此外,此次更新还修复了Flash player一个致命漏洞.

No comments

从Flex3发布看RIA

by wersling on June 11th, 2007, under News

今天,Flex3Beta发布,提供的新特性很多:

支持代码重构、内存性能分析器等,这些为开发者带来方便。

而对Ajax的链接和自动生成对Web语言的链接,确实十分强悍的将Web应用与RIA相结合,从而将一致诟病的Flash无法直接链接数据库的问题得到一定的解决。

Adobe是RIA的创造者,现在被Ajax抢了风头,看来是想收复失地了。之前的Flash多通过xml进行数据交互,在开发中存在一些很多不便,现在看来adobe有志解决这个问题,flash不再是一个矢量动画播放程序。

, No comments