flash as3使用,播放声音和加载外部声音文件

 

[as3]使用声音

AS3中使用声音跟AS2有很大的不同。先看下Flash帮助中的一些介绍,然后我们再使用导入到Flash中的声音做个小测试。
理解声音的结构

应用程序可以从4个地方加载声音:

  • 运行时从外部声音文件里加载
  • 内嵌到SWF文件里的声音资源
  • 从连接到用户系统的麦克风上获取声音数据
  • 从远程多媒体服务器,比如Flash Media Server获取声音流

可以等到声音全部加载后再播放,也可以边加载边播放。

ActionScript 3.0Flash Player支持以mp3格式存储的声音。它们不能直接加载或播放其他格式的声音,比如WAVAIFF

使用Adobe Flash CS3 Professional,可以导入WAVAIFF格式的声音,然后就可以把它们以MP3的格式嵌入到SWF文件中。Flash开发工具可以压缩嵌入的声音文件以减少文件大小,不过这样需要以降低声音质量的代价。更多信息查看 "Importing Sounds" in Using Flash.

ActionScript3.0声音使用flash.media包中的下列类

描述

flash.media.Sound

Sound类用来加载声音,管理声音的基本属性以及使声音开始播放

flash.media.SoundChannel

当程序播放一个声音对象的时候,会创建一个新的SoundChannel对象控制播放。SoundChannel对象同时控制声音的左右频道。每个播放的声音都有自己的SoundChannel对象。

flash.media.SoundLoaderContext

SoundLoaderContext类指定当加载一个声音的时候使用多少秒的缓冲区,以及从服务器加载文件的时候FlashPlayer是否查找跨域策略文件。SoundLoaderContext对象作为Sound.load() 方法的参数使用。

flash.media.SoundMixer

SoundMixer类控制程序中所有声音的回放及安全属性。实际上,多个声音频道通过一个共同的SoundMixer对象混合在一起,因此,SoundMixer对象的属性会影响正在播放的所有SoundChannel对象。

flash.media.SoundTransform

SoundTransform类包含用于控制音量和平衡的值。SoundTransform对象可以应用到一个单独的SoundChannel对象,全局的SoundMixer对象或者一个Microphone对象。

flash.media.ID3Info

ID3Info对象包含mp3文件中的ID3元数据信息。

flash.media.Microphone

Microphone类表示连接到用户电脑上的麦克风或者其他声音输入设备。从麦克风输入的音频可以传送到本地喇叭上或者远程服务器上。Microphone对象控制它自己声音流的取样率。

每个加载和播放的声音都需要它自己的Sound类和SoundChannel类。从多个SoundChannel实例输出的声音在播放中通过全局的SoundMixer混合在一起。

SoundSoundChannelSoundMixer类不能用在从麦克风或者流媒体服务器获取的声音上。

加载外部声音文件

Sound类的每个实例都用来加载和回放指定的声音。应用程序不能重复使用一个Sound对象加载多于一个的声音。如果想加载一个新的声音,需要创建一个新的声音对象。

如果加载一个小的声音文件,比如要附加在按钮上的点击声音,可以像下面这样创建一个新的Sound,然后让它自动加载声音文件:

ActionScript Code:

  1. var req:URLRequest = new URLRequest("click.mp3");
  2. var s:Sound = new Sound(req);

Sound()构造函数使用一个URLRequest对象作为第一个参数。当指定了URLRequest参数的时候,Sound对象就开始自动加载指定的声音文件。

除了这个最简单的情况之外,应用程序都应该注意声音的加载过程并监视加载过程中出现的错误。比如,如果这个点击声音特别的大,可能在用户点击按钮触发这个声音的时候这个声音文件还没有完全加载完。试图播放一个未加载完的声音可能导致一个运行期错误。安全的做法是等声音完全加载后再允许用户的那些可能导致声音播放的行为。

在声音加载过程中,Sound对象会发送几个不同的事件。应用程序可以监听这些事件来跟踪加载过程以确保声音在完全加载后才能播放。下表列出了声音对象可能发送的事件。

事件

描述

open (Event.OPEN)

在声音加载操作刚开始时发送。

progress (ProgressEvent.PROGRESS)

当从文件或者流中接收到数据的时候周期性的发送。

id3 (Event.ID3)

当一个mp3声音的ID3数据可用时发送。

complete (Event.COMPLETE)

当声音的所有数据加载完后发送。

ioError (IOErrorEvent.IO_ERROR)

如果声音文件不能定位或者加载过程中在所有数据接收完之前被中断的时候发送。

下面的代码演示了如何在声音加载完后播放一个声音:

ActionScript Code:

  1. import flash.events.Event;
  2. import flash.media.Sound;
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值