第20章声音编程

上传人:xins****2008 文档编号:111147082 上传时间:2019-11-01 格式:DOCX 页数:6 大小:113.29KB
返回 下载 相关 举报
第20章声音编程_第1页
第1页 / 共6页
第20章声音编程_第2页
第2页 / 共6页
第20章声音编程_第3页
第3页 / 共6页
第20章声音编程_第4页
第4页 / 共6页
第20章声音编程_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《第20章声音编程》由会员分享,可在线阅读,更多相关《第20章声音编程(6页珍藏版)》请在金锄头文库上搜索。

1、第20章 声音编程在Flash创建的引人入胜的动画效果当中,声音效果是最容易让人忽略,却又是最吸引人的地方。在动画创作中加入声音元素,能够使动画效果交互性更强,效果更生动。比如可以在视频游戏中添加声音效果,可以在应用程序用户界面中添加音频回馈,甚至可以创建一个分析通过Internet加载的mp3文件的程序。本章将介绍何加载外部音频文件以及处理SWF中嵌入的声音。还将介绍如何控制音频和从用户麦克风捕获声音等内容。1声音编程介绍在计算机中声音信息的表示形式被称为数字音频。计算机可以捕获并编码数字音频以及对其进行存储和检索,进而可以通过连接到计算机上的扬声器进行回放。使用Flash Player和A

2、ctionScript结合,也能够实现音频文件的回放。在ActionScript 3.0中,利用载入的数字音频数据,可以随意的来控制声音的音量、或者立体声还是单声道声音。不过在ActionScript 3.0中控制声音之前,需要先将声音信息加载到Flash Player中。ActionScript 3.0提供了4种方法将音频数据加载到 Flash Player 中,分别为:在运行时加载的外部声音文件。在应用程序的 SWF 文件中嵌入的声音资源。来自连接到用户系统上的麦克风的声音数据。从远程媒体服务器流式传输的声音数据,如Flash Media Server。1)Sound类Sound类用于在应

3、用程序中使用声音。利用Sound类创建新的Sound对象、将外部的MP3文件加载到该对象并播放该文件、关闭声音流,以及访问有关声音的数据,比如有关流中字节数和ID3元数据的信息。方法 说明 close() 关闭该流,从而停止所有数据的下载。 load(stream,context) 启动从指定 URL 加载外部 MP3 文件的过程。 play(startTime,loops, sndTransform) 生成一个新的 SoundChannel 对象来回放该声音。 2)SoundChannel类SoundChannel类用于在应用程序中控制声音。在Flash应用程序中,播放的每一个声音都被分配到

4、一个声道,而且应用程序可以具有混合在一起的多个声道。SoundChannel类还包含一个stop()方法、几个用于监控声道幅度的属性,以及用于对声道设置SoundTransform对象的属性。SoundChannel类共有4个属性,1个方法,1个事件,具体内容如下。leftPeak:只读属性,表示左声道的当前音量幅度,范围从0(静音)至1(最大音量)。position:只读属性,表示该声音中播放头的当前位置。rightPeak:只读属性,表示右声道的当前音量幅度,范围从0(静音)至1(最大音量)。soundTransform:分配给该声道的SoundTransform对象。用于实现音量的控制和

5、调节。stop()方法:停止在该声道中播放声音。soundComplete事件:在声音完成播放后调度该事件。3)SoundMixer类如果在加载声音文件或视频文件数据的同时播放该文件,则认为是流式传输。通常,将对从远程服务器加载的外部声音文件进行流式传输,以使用户不必等待加载完所有声音数据再收听声音。SoundMixer类就是用于控制嵌入的音频文件在传输声音流之前,预先载入道缓冲区的时间。注意,此类只能控制动态加载的声音文件,而不能控制嵌入道Flash Player中的声音文件。此类有2个属性,3个方法,具体如下所示。bufferTime:表示在开始传输嵌入的声音流之前,将其预加载到缓冲区中所

6、用的秒数。soundTransform :控制全局声音属性的SoundTransform对象。areSoundsInaccessible():确定是否因安全限制而无法访问任何声音,若无法访问,则返回false。computeSpectrum():获取当前声音波形的快照,并将其放在指定的ByteArray对象数组中。stopAll():停止当前正在播放的所有声音。2播放和控制声音要实现在Flash中播放声音,需要把声音文件加载到Flash Player中。加载完之后,就可以利用flash.media包中的类进行播放控制,实现相应的播放效果。本节将首先介绍两种加载声音的方法,然后介绍声音的播放控制

7、和调节。1)加载外部声音要加载外部的声音文件,需要使用URLRequest类提供访问外部音频文件的URL连接,然后创建Sound类的实例,然后利用该类的构造函数使用URL作为参数加载外部的音频文件。Sound类的构造函数用法格式如下所示。Sound(stream:URLRequest = null, context:SoundLoaderContext = null)参数说明:stream:URLRequest连接地址,默认为空,指向外部MP3文件的URL连接地址。context:SoundLoaderContext,音频文件载入的长度数据。表示MP3数据保留在Sound对象的缓冲区中的最小毫

8、秒数。在开始播放以及在网络中断后继续回放之前,Sound对象将一直等待直至至少拥有这一数量的数据才开始执行播放操作。默认值为1000毫秒。2)加载嵌入声音并不是所有的声音文件都需要加载外部文件。在声音文件本身不大,对生成的SWF文件大小影响不大的情况下,通常使用在Flash中嵌入文件要比使用外部音频灵活性更强,更容易操作。下面的实例介绍在Flash中嵌入声音并加载的方法,具体操作步骤如下所示3)播放、暂停和停止加载完成的文件,在需要播放时,只要执行为Sound实例的Sound.play()方法就可以实现,其用法格式如下所示。play(startTime:Number = 0, loops:in

9、t = 0, sndTransform:SoundTransform = null):SoundChannel说明:此方法将返回SoundChannel声音通道对象,用于控制声音。如果没有声卡或用完了可用的声道,此方法将返回null。注意:一次最多可以使用32个声道。参数及返回说明:startTime:以毫秒为单位的开始播放放的初始位置,默认为0,也就是声音的头部。loops:定义在声道停止播放之前,声音循环播放的的次数。默认为0,表示无限循环。sndTransform:分配给该声道的初始SoundTransform对象值,默认为空。4)显示播放进度通常情况下,在播放音频文件的过程中,需要显示

10、当前正在播放的音频文件的进度值,也就是播放的百分比。利用的原理为:使用Sound类的length属性获取当前音频的总长度;使用SoundChannel类的position属性获取播放头在当前音频的位置,也就是当前播放的长度;然后二者的比值就是当前播放进度值。5)控制音量在ActionScript 3.0中,音量的控制,改变的是当前声音通道的音量大小。要实现此效果,需要创建一个SoundTransform对象,然后使用该对象的volume属性来改变SoundTransform对象的音量值,并最后应用与声音通道。下面的实例先创建一个Slider(滑块)组件,通过在滑块轨道的端点之间移动滑块来调节音

11、量的值。然后使用SoundTransform对象来调节音量发生变化。使用文档类:SoundVolue,代码如下所示。3捕获声音输入在ActionScript 3.0中提供了Microphone类拉捕获输入的声音。不过此类主要用于服务器,如Flash Media Server或Flex。不过在没有服务器的情况下也可以使用Microphone类,只是在使用上受到一定的限制。1)Microphone类Microphone类主要用于捕获麦克风的声音,然后将捕获到的声音传递到服务器进行保存。此类的常用属性有11种,如表20-5所示;属性 数据类型 说明 activityLevel Number 麦克风正

12、在检测的音量。 gain Number 麦克风在传送信号之前应该将信号放大的倍数。 index int 麦克风的索引,它反映在Microphone.names返回的数组中。 muted Boolean 指定用户是已经拒绝对麦克风的访问(true)还是已经允许对麦克风的访问(false)。 name String 当前声音捕获设备的名称,它由声音捕获硬件返回。 names Array 所有可用的声音捕获设备的名称。 rate int 麦克风捕获声音的频率,单位是kHz。 silenceLevel Number 激活麦克风并调度activity事件所需的音量。 silenceTimeout int 麦克风停止检测声音的时间和调度activity事件的时间之间相差的毫秒数。 soundTransform SoundTransform 在此麦克风对象处于环回模式时,控制它的声音。 useEchoSuppression Boolean 若启用了回音抑制,则返回true;否则返回false。 2)获取麦克风的音频内容要获取麦克风中输入的声音,需要使用Microphone类的getMicrophone()静态方法,其用法格式如下所示。Micro对象.getMicrophone(index)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号