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); } } }
这个方式的好处是:以最快的速度播放音乐,并确保中间不进行数据缓冲,使音乐流畅的播放。
同时也存在一些问题:
- 如果用户之前有下载过这个音频的一部分,那么计算将不在准确;
- 如果用户的网速不稳定,那么也会导致不准确(可以通过设置更长的初始计算时间来平衡).
loading, 音乐, Music
by wersling on August 14th, 2007, under Music
专辑打包下载:下载地址。
专辑:Transformers Soundtrack
发行:Warner Bros.
日期:July 3, 2007
专集曲目:
- Linkin Park – What I’ve Done [MV]
-
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.
- Disturbed – This Moment
- Goo Goo Dolls – Before It’s Too Late (Sam and Mikaela’s Theme)
-
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.
- HIM – Passion’s Killing Floor
-
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.
- Styles Of Beyond – Second To None
- Armor For Sleep – End Of The World
- Idiot Pilot – Retina and the Sky
- Julien-K – Technical Difficulties
-
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]
Transformers Soundtrack, Warner Bros, 原声大碟, 变形金刚
by wersling on July 31st, 2007, under News
adobe中有篇文章介绍Flash弹出浏览窗口的方法,相信开发flash常常遇到,我也是,最近就被这个方法在IE7中的异常搞了很久。因此,提出几点提醒下自己:
- as3中getURL变成navigateToURL。
- 在使用JS方法是,window.open 会导致Flash页面跳转,必须加”void(0)”,或者 void(window.open(…));。
- 执行js是,window不能设置为”_blank”。
- 其他请查看adobe的文章.
as3, flash, getURL, js, window.open, 弹出窗口
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).
air, as3, asschema, code, flash, xml, xsd
by wersling on July 11th, 2007, under News
9.0.47所有版本下载地址
主要更新了音频、视频和全屏中出现的问题,查看更新记录(en)
此外,此次更新还修复了Flash player一个致命漏洞.
flash player
by wersling on June 11th, 2007, under News
今天,Flex3Beta发布,提供的新特性很多:
支持代码重构、内存性能分析器等,这些为开发者带来方便。
而对Ajax的链接和自动生成对Web语言的链接,确实十分强悍的将Web应用与RIA相结合,从而将一致诟病的Flash无法直接链接数据库的问题得到一定的解决。
Adobe是RIA的创造者,现在被Ajax抢了风头,看来是想收复失地了。之前的Flash多通过xml进行数据交互,在开发中存在一些很多不便,现在看来adobe有志解决这个问题,flash不再是一个矢量动画播放程序。
flex3, ria