15.15.编写一个音乐程序

评论(0)浏览(73)分类:flash/flex/fcs/AIR
15.15.编写一个音乐程序问题我想写一个全功能的音乐程序,比如一个MP3 播放器解决办法利用前面讲到的知识即可做到讨论这一节将整合前面的技术到一个程序上:+展开-ActionScriptpackage{importflash.display.Sprite;importflash.display.Stage;importflash.display.StageAlign;importflash.display.StageScaleMode;importflash.text.TextField;importflash.events.Event..

15.14.改变声音的音量和平衡度

评论(0)浏览(123)分类:flash/flex/fcs/AIR
15.14.改变声音的音量和平衡度问题我想改变音量或左右声道平衡解决办法创建SoundTransform 对象, 改变音量及平衡度, 把该对象赋值给SoundChannel 对象的soundTransform属性。讨论在以前的版本中,可直接通过Sound对象改变音量及平衡度,现在这些被抽象出来形成SoundTransform类。SoundChannel对象有个soundTransform属性,它是SoundTransform的类实例。要改变音量或平衡度,..

15.13.读取音乐的声谱

评论(0)浏览(115)分类:flash/flex/fcs/AIR
15.13.读取音乐的声谱问题我想显示出声音的波形图(声谱)解决办法使用SoundMixer.computeSpectrum( )填充一个字节数组,读取这个数组得到具体数据。讨论访问声谱数据是ActionScript 3.0 新增的特性之一,在早期的Flash版本时期,开发者也很想获得这些数据,需要借助一些第三方工具,但是它们的实现过于复杂且效率低。现在这个功能已经内置于SoundMixer类之中,再加上..

15.12.停止播放所有的音乐

评论(0)浏览(135)分类:flash/flex/fcs/AIR
15.12.停止播放所有的音乐问题我要停止所有当前正在播放的音乐解决办法使用SoundMixer的stopAll( )方法讨论当开始播放一个音乐时,它会产生一个SoundChannel对象,在一个swf里可以播放多个音乐,每个音乐都对应一个SoundChannel对象,声音某些方面由Sound对象本身控制,有些则有SoundChannel对象控制,最后所有正在播放的声音进行合成输出到扬声器上。这个重要的工作由So..

15.11.获得声音的音量

评论(0)浏览(97)分类:flash/flex/fcs/AIR
15.11.获得声音的音量问题我想知道正在播放的声音的音量是多少解决办法通过SoundChannel.leftPeak and 和SoundChannel.rightPeak 属性讨论任何声音,当在播放时产生强或弱的声波,我们称之为振幅,ActionScript 3.0 可获得一个立体声的左右声道的振幅,分别为SoundChannel的leftPeak和rightPeak属性。它们的值范围是0.0到1.0,1.0表示最大的音量,具体的控制是通过So..

15.10.暂停和重新播放声音

评论(0)浏览(103)分类:flash/flex/fcs/AIR
15.10.暂停和重新播放声音问题我想暂停一下过一会儿再继续播放音乐解决办法利用SoundChannel的position属性即可做到讨论在第15.2章,我们讲过调用Sound对象的close( )方法可以停止播放,但是这样也停止了声音流,要想重新播放,必须再次调用load( )方法。还好,SoundChannel类提供了一个stop( )方法,它可以让音乐暂停而不影响声音流中断,要想重新播放,调用play( )方法即..

15.9.跟踪音乐播放进度

评论(0)浏览(88)分类:flash/flex/fcs/AIR
15.9.跟踪音乐播放进度问题我想知道当前播放的歌曲已经播放到什么位置了解决办法使用Sound.length得到歌曲的总长度,SoundChannel.position得到当前的播放位置讨论第15.6章讨论了如何添加一个进度条既显示音乐的播放进度,也显示音乐的下载进度,这一节就来创建播放进度条。这一节涉及如何跟踪音乐的播放进度,要做到这一点,必须知道两件事:音乐的长度和当前的播放位..

15.8.判定音乐是否播放完毕

评论(0)浏览(121)分类:flash/flex/fcs/AIR
15.8.判定音乐是否播放完毕问题开始播放后,我想知道什么时候播放完毕解决办法监听soundComplete事件。讨论很多情况下我们需要知道什么时候音乐会播放完毕,例如,音乐播放器的播放列表,需要判定是否播放完毕以便播放下一首音乐。这一节我们将介绍flash.media包中的SoundChannel类。当我们调用Sound对象的play( )方法时,它会返回一个SoundChannel对象,因此每一首正在播..

15.7.读取声音文件的ID3标签数据

评论(0)浏览(164)分类:flash/flex/fcs/AIR
15.7.读取声音文件的ID3标签数据问题我想访问正在播放的mp3文件的信息,比如歌曲名,艺术家,专辑,分类等等。解决办法读取Sound对象的id3属性讨论MP3 文件大多包含一些如songname, artist, album, genre, year等元数据,不过这些并不是都有,但大多数情况下都有songname和artist标签。通过Sound对象的id3属性可获得这些数据。这个属性其实是flash.media.ID3Info的类实例,它包..

15.6.获得声音文件的大小

评论(0)浏览(78)分类:flash/flex/fcs/AIR
15.6.获得声音文件的大小问题我想知道一个mp3文件的大小及当前载入的大小。解决办法通过Sound对象的bytesTotal和bytesLoaded属性讨论当载入音频文件时,最好能让用户看到当前载入数据的进度。最后有一个可视化的进度条,就像Windows Media Player或QuickTime Player那样。这一节我们利用Sound对象的两个属性做个灰色的进度条,bytesTotal和bytesLoaded.。bytesTotal指当..

15.5.循环播放

评论(0)浏览(85)分类:flash/flex/fcs/AIR
15.5.循环播放问题我想多次播放声音或重复播放。解决办法在play( )方法中设置循环值讨论默认情况下播放声音只是从头到尾播放一次即停止,很多时候我们希望可以播放多次或循环播放,把它作为游戏或网页的背景音乐。这里我们可设置循环让音乐厅起来好像是很长的音乐。Play()方法的第2个参数即为循环次数,在设置第2个参数时必先设置第1个参数,第1个参数表示起始..

15.4.声音的起始播放位置

评论(0)浏览(93)分类:flash/flex/fcs/AIR
15.4.声音的起始播放位置问题我不想从头播放声音而是从某个位置开始播放解决办法设置play( )方法的参数讨论很多情况下我们并不希望从头开始播放声音,换句话说,我们要剪掉前面一部分后开始播放.Sound对象提供了这种能力让我们轻松做到这一点。如果调用play( )方法不指定参数,即从头开始播放,如果传递一个毫秒为单位的可选参数就会从指定的位置播放,如下面的例子在5...

15.3.给声音数据设置缓冲

评论(0)浏览(98)分类:flash/flex/fcs/AIR
15.3.给声音数据设置缓冲问题我想让声音播放的更流畅些解决办法通过SoundLoaderContext类设置缓冲时间讨论Sound类播放声音的方式是把整个声音数据载入完毕才进行播放,这对于小文件可能没什么问题,但如果是个大的声音文件,我们更希望边载入边播放,减少等待时间,更利于用户体验。根据声音的编码和网络宽带,有时候声音播放的速度可能比下载的速度还要快,这种情况下声..

15.2.开始和停止播放声音

评论(0)浏览(81)分类:flash/flex/fcs/AIR
15.2.开始和停止播放声音问题如何开始播放或停止播放声音。解决办法使用play( )方法播放声音,使用close( )方法停止播放。讨论播放声音很简单,只要调用Sound对象的play( )方法即可,如:+展开-ActionScript_sound=newSound(newURLRequest("song.mp3"));_sound.play();很简单吧,另外play( )方法有一些可选的参数,具体请看第15.1章和15.10章.。close( )方法即不是停止正..

15.1.创建Sound对象及载入声音

评论(0)浏览(122)分类:flash/flex/fcs/AIR
15.1.创建Sound对象及载入声音问题我想载入声音到SWF应用程序上。解决办法创建一个Sound对象,载入外部的声音文件讨论创建一个Sound对象很容易,这跟创建其他类实例差不多,首先记得先引入Sound类库:+展开-ActionScriptimportflash.media.Sound;Var_sound:Sound=newSound();接着我们需要一个声音文件,比如song.mp3,和swf文件放在服务器的同一个目录下。要载入声音文件到So..

15.0.简介

评论(0)浏览(110)分类:flash/flex/fcs/AIR
15.0.简介在应用程序,游戏或Web站点上使用声音可以大大争强用户体验。在Flash IDE里通常是通过导入声音库,把声音放入时间线帧,关联到电影剪辑等等。本章内容覆盖ActionScript 3.0 使用Sound类及其相关类进行声音编程。Sound类用于载入外部MP3文件,因为这文件并不是嵌入到swf内的,因此需要根据URL进行载入,这要遵循域安全约束(第三章)。这一章涉及..

第十五章.声音编程

评论(0)浏览(75)分类:flash/flex/fcs/AIR
第十五章.声音编程15.0.简介15.1.创建Sound对象及载入声音15.2.开始和停止播放声音15.3.给声音数据设置缓冲15.4.声音的起始播放位置15.5.循环播放15.6.获得声音文件的大小15.7.读取声音文件的ID3标签数据15.8.判定音乐是否播放完毕15.9.跟踪音乐播放进度15.10.暂停和重新播放声音15.11.获得声音的音量15.12.停止播放所有的音乐15.13.读取音乐的声谱15.14.改变声音..

14.8.字符串转换为日期

评论(0)浏览(105)分类:flash/flex/fcs/AIR
14.8.字符串转换为日期问题我想通过字符串创建Date对象解决办法使用DateFormat对象的parse( )方法讨论ActionScript并没有提供现成的方法把字符串转换为日期,自定义类ascb.util.DateFormat的parse()方法把传递进来的字符串参数转换为日期格式返回一个新的Date对象。+展开-ActionScriptvarformatter:DateFormat=newDateFormat("m/d/Y");创建好DateFormat 实例,下一步就..

14.7.使用Timer(定时器)

评论(0)浏览(85)分类:flash/flex/fcs/AIR
14.7.使用Timer(定时器)问题我想通过一定的间隔或一定的延时轮询某个方法解决办法使用flash.util.Timer 类讨论flash.util.Timer 类允许通过添加时间事件或延时来调用方法。通过Timer构造器创建实例对象,传递一个毫秒数字作为构造器参数作为间隔时间,下面的例子实例化一个Timer对象每隔1秒钟发出事件信号:+展开-ActionScriptvartimer:Timer=newTimer(1000);一旦创建了..

14.6.DMYHMSM和毫秒之间的转换

评论(0)浏览(111)分类:flash/flex/fcs/AIR
14.6.DMYHMSM和毫秒之间的转换问题我想在DMYHMSM格式(天,月,年,小时,分,秒,毫秒等形式的时间) 和毫秒之间自由转换。解决办法使用time属性讨论我们已经习惯时间和日期是以年月日的形式,例如时间10:25 a.m., Tuesday, January 5, 2010 很容易理解,但是像ActionScript等一些语言是以毫秒为单位存储时间的,因此在显示给用户看之前需要做个转换。当我们用ActionScript构造..

14.5.格式化秒或毫秒为分或秒

评论(0)浏览(102)分类:flash/flex/fcs/AIR
14.5.格式化秒或毫秒为分或秒问题我想把秒或毫秒格式化为分或秒。解决办法使用自定义类ascb.util.DateFormat.formatSeconds( ) 或ascb.util.DateFormat.formatMilliseconds( )方法。讨论ActionScript里很多值都是以秒或毫秒形式存在的,例如声音长度单位是毫秒。但是在大多数情况下我们希望显示单位为分或秒,这里我们提供了DateFormat实现了上述方法。ascb.utils.DateForma..

14.4.格式化日期和时间

评论(0)浏览(81)分类:flash/flex/fcs/AIR
14.4.格式化日期和时间问题我要自定义日期和时间的显示格式解决办法使用Date.toString( ), 或者自定义方法DateFormat.format( )讨论Date.toString( )方法返回Date对象的字符串类型数值,比如:+展开-ActionScript//显示:TueJan514:25:20GMT-08002010trace((newDate()).toString());如果忽略toString()方法,ActionScript 也会自动调用toString( )方法,结果是一样的..

14.3.获取星期天数和月份名称

评论(0)浏览(113)分类:flash/flex/fcs/AIR
14.3.获取星期天数和月份名称问题我想知道星期几或几月解决办法创建包含星期天数和月份的名称数组,然后使用数字的天数和月份来提取相应的数组元素值。讨论ActionScript的Date类提供了day和month属性,它们返回整数值如星期(0到6),月份(0到11)。但是如果想获得名称而不是数字的话就需要自己创建包含星期天数和月份的名称数组,或者使用自定义类ascb. util.DateFormat。..

14.2.获取时间值

评论(0)浏览(102)分类:flash/flex/fcs/AIR
14.2.获取时间值问题我要取得年月日,星期,小时,分,秒,毫秒等数值。解决办法是用fullYear, date, month, day, hours, minutes, seconds, milliseconds 等属性。讨论从Date对象的fullYear, date, month, day, hours, minutes, seconds, milliseconds属性中读取:fullYear 属性返回4位数的年份值,如2010.date 属性返回月天数,如1 到31.month 属性返回月份,..

14.1.获得当前日期和时间

评论(0)浏览(129)分类:flash/flex/fcs/AIR
14.1.获得当前日期和时间问题我想知道当前日期和时间解决办法使用Date( ) 创建一个date对象,或者使用一个CGI脚本或其他服务端脚本返回服务器时间,然后根据返回值创建date对象讨论ActionScript计算出来的日期和时间是根据客户端计算机的日期和时间而得出的,因此如果客户端的时间不正确,那么date对象也是不正确的。+展开-ActionScript//创建新的Date对象varcurrent:Da..

14.0.简介

评论(0)浏览(76)分类:flash/flex/fcs/AIR
14.0.简介日期和时间对于很多ActionScript程序来说是很重要的,比如用于一些和时间相关的定时操作,或者检测用户的登陆是否过期等。在ActionScript内部是以毫秒的形式存储日期和时间的,但是很多编程语言的日期和时间是以秒为单位的,这点需要注意。另外,Date 类用于设置或获取日期和时间,或者直接通过其属性fullYear, month 等,这些属性的值也是以毫秒..

第十四章.时间和日期

评论(0)浏览(89)分类:flash/flex/fcs/AIR
第十四章.时间和日期14.0.简介14.1.获得当前日期和时间14.2.获取时间值14.3.获取星期天数和月份名称14.4.格式化日期和时间14.5.格式化秒或毫秒为分或秒14.6.DMYHMSM和毫秒之间的转换14.7.使用Timer(定时器)14.8.字符串转换为日期

13.10.对字符串使用正则表达式的方法

评论(0)浏览(90)分类:flash/flex/fcs/AIR
13.10.对字符串使用正则表达式的方法RegExp 类包含两个方法:exec() 和 test()。除 RegExp 类的 exec() 和 test() 方法外,String 类还包含以下方法,使您可以在字符串中匹配正则表达式:match()、replace()、search() 和 splice()。test() 方法RegExp 类的 test() 方法只检查提供的字符串是否包含正则表达式的匹配内容,如下面的示例所示:+展开-ActionScriptvarpattern:RegExp=/C..

13.9.标志和属性

评论(0)浏览(81)分类:flash/flex/fcs/AIR
13.9.标志和属性下表列出了可以为正则表达式设置的五种标志。每种标志都可以作为正则表达式对象属性进行访问。 标志属性描述gglobal匹配多个匹配。iignoreCase不区分大小写的匹配。应用于 A-Z 和 a-z 字符,但不能应用于扩展字符,如 é 和 é。mmultiline设置此标志后,$ 和 ^ 可以分别匹配行的开头和结尾。 sdotall设置此标志后,.(点)可以匹配换行符 (\n)。x..

13.8.正则表达式分组

评论(0)浏览(70)分类:flash/flex/fcs/AIR
13.8.正则表达式分组您可以使用括号在正则表达式中指定组,如下所示:/class-(\d*)/组是模式的子部分。您可以使用组实现以下操作:将数量表示符应用到多个字符。界定要应用逻辑“或”(通过使用 | 字符)的子模式。捕获正则表达式中的子字符串匹配(例如,在正则表达式中使用 \1 以匹配先前匹配的组,或类似地在 String 类的 replace() 方法中使用 $1)。下面几节将..