as3 加载外部声音文件问题详细剖析

2019-10-08 15:02:53刘景俊


使用嵌入的声音
好了,下面我们把声音导入到库里使用。
打开Flash CS3,选择文件->导入到库,选择好声音,然后确定后会导入声音。打开库面板,找到我们导入的声音,右键,选择”linkage…”菜单
< XMLNAMESPACE PREFIX ="V" />
会弹出如下框,选择Export for ActionScript注意观察这个弹出框
它与AS2中明显不同的是,标识符栏(identifier栏)不能填写,而类(Class)和基类(Base class)栏必须填写。类的名字默认是声音的文件名,但是名字中只能能有字母数字,且以字母开头,因此图中的名字01.mp3是不合格的,可以改为mp3或其他符合规则的名字。基类就是flash.media.Sound。我们点确定,会弹出下框:
大意是指定的类”mp3″在类路径下找不到,在SWF文件导出时会自动为你创建一个类。点确定就可以了。

在帧上写如下代码:
ActionScript Code:

复制代码
var drum:mp3 = new mp3();
var channel:SoundChannel = drum.play();

导出,就可以听到声音了。
[as3]播放声音
播放一个加载的声音可以简单的调用Sound对象的Sound.play()方法,就像下面这样:
ActionScript Code:

复制代码
var snd:Sound = new Sound(new URLRequest("smallSound.mp3"));
snd.play();

当使用ActionScript3.0播放声音的时候,你可以实现下列操作:
从一个指定的位置播放声音(不一定是最开始)
暂停声音,然后从暂停的位置处重新开始播放
可以精确的知道声音什么时候播放完了
跟踪声音的播放进度
当声音播放的时候改变音量或者均衡
要在播放过程中实现这些效果,使用SoundChannel, SoundMixer, 和 SoundTransform 类.
SoundChannel控制一个单独的声音的播放.SoundChannel.position属性可以被当作播放头,用来指示数据播放的位置.
当程序调用Sound.play()方法时,会创建一个新的SoundChannel实例来控制播放.
程序可以为Sound.play()方法指定它的startTime参数,该参数接收以毫秒为单位的数字,这样就可以使声音从指定的位置开始播放.
如果同时指定了Sound.play()方法的startTime参数和loops参数,那么当声音会从相同的起始位置重复播放就像下面这样:
ActionScript Code:

复制代码
var snd:Sound = new Sound(new URLRequest("repeatingSound.mp3"));
snd.play(1000, 3);

在这个例子中,声音会接连从离开始1秒的位置播放3次.
暂停和重新开始声音
如果你的程序播放一个长声音,比如一首歌或者播客(podcasts,暂译为播客),你可能想允许用户可以暂停,然后继续播放这个声音.然后声音并不能像字面意思那样实现暂停,它只能停止(从字面意思上来讲,暂停跟停止是不同的,我们想实现暂停效果,但是没有直接的ActionScript语句可以实现暂停).但是,声音可以从任何位置处播放.因此你可以记录下它停止的位置,然后从这个位置后面开始播放,就实现了暂停效果.