发新话题
打印

利用AS控制声音教程!

利用AS控制声音教程!

本来想从前台提交,但不知道为什么,一提交就出错,最后想想,就发这吧,希望对大家有帮助,如果觉得教程好的话,管理员提交到教学中去,我也没意见!



声明:前半部分声音的属于转载blueidea的as控制一部分内容。后半部分属于我本人制作书写。你可以随意转载,随意署名,不属于盗版。
示例中仅仅写出了常用的几个动作的设置,其他的一些不常用的没写进去。

声音的一些属性与方法:

mySound=newSound(); / /新建一个声音对象,对象的名称是mySound。
mySound.start(n); //开始在n秒播放声音,当n为空时,从开始播放
mySound.stop(); 停止声音的播放。
音量控制:(范围从0-100)
mySound.getVolume(); //获取当前的音量大小。
mySound.setVolume(); //设置当前音乐的音量。

左/右均衡:(范围从-100到100)


mySound.getPan(); //获取左右均衡的值。
mySound.setPan(); //设置左右均衡的值。

声道音量:


mySound.getTransform(); //获取左右声音的音量。
mySound.setTransform(); //设置左右声道的音量。

读取声音:


mySound.loadSound(); //从外部载入声音。
mySound.attachSound(); //从库中加载声音。
mySound.getBytesLoaded(); //获取声音载入的字节数
mySound.getBytesTotal(); //获取声音的总字节数。

声音对象的属性:


mySound.duration; //声音的长度。
mySound.position; //声音已播放的毫秒数。

声音对象的函数:


mySound.onLoad;声音载入时调用。
mySound.onComplete;声音播放完成时调用。

在对声音进行AS控制前,我们先将解声音一些基本属性的控制和flash所遇到的声音的问题。
一:声音类型的选择:
一般情况下,我们习惯听MP3的音乐,如果我们要从外部加载声音的话,flash只支持MP3,其他的声音不允许被加载(不支持其他的声音)。但我们在使用的时候却发现这个问题,使用mp3的声音导出的SWF文件是非常的大,而我们使用wav导出的文件却非常的小,为什么呢?因为mp3本身就是一种压缩格式,而我们的flash在导出声音的时候,也是压缩格式,好比一个被挤干了水的海绵,不能在从里面挤出水来。而wav则像是一块没被挤过的水的海绵,则他可以大幅度的压缩。所以,我们不需要从外部导入声音的时候,一定要使用WAV格式的声音,而在外部导入声音的时候一定要使用mp3格式的声音。
二:数据流与事件的区别
我们导入到flash中一个声音文件,然后在帧中间插入该声音,然后将时间线放入到声音第一帧处,按下键盘的回车键。然后我们听到声音后在按下回车键,我们这时候能够看到,时间线停止运动了,但声音并没有停止。这是因为默认的声音同步是:事件.我们将下面的声音的事件换成数据流(Event换成Stream)在按我们上面的操作,你会发现声音停止了。

故我用自己的话总结:事件指的是声音从开始播放到停止为止结束。而数据流指的是将生音文件按帧分成每一块,然后在去按时间线的播放而播放。也就是说,我们如果不做AS的字幕与声音同步的话,那么我们就要按这种方法去插入字幕。具体方法在这里就不祥加解释了。
为了加以说明声音的控制,我们将使用实际的例子来对声音进行控制

打开库反选刚导入的声音


在对话框中输入要为加载声音的名称:



在动作面板中输入以下AS:


现在我们在测试的话,发现声音已经加载进来了!
(下面这部分是我在家里写的,上面的这部分是在公司写的,公司的系统是2000,MX2004英文版本,家里的系统是XP,MX2004中文版本)
现在我们在主场景中做控制,在主场景中我们按下图进行设置,(两滚动条,属于影片剪辑,我们设置好主场景后,在来做这两个滚动条!)

背景和文本安钮放入两层中,添加帧到第7帧。然后在添加一层写下如下脚本。(按钮事件加载外部声音)


第三帧中写入如下脚本:

第四帧写下如下脚本:


第五帧写下如下脚本:


第六帧写下如下脚本:


第7帧写下如下脚本:


gotoAndPlay(6);

每帧设置完成后,来设置控制声音音量和左右均衡的滚动条:
设置音量,主场景中将该影片剪辑命名为:sad ,滚动的小块是个影片剪辑命名为:sy,该影片剪辑中仅有一名称为sy的按钮。将sy影片剪辑定位好后,在as脚本中写如下代码:

_root.sad.sy.sy.onPress=function () {
_root.sad.sy.startDrag(false,0,_root.sad.sy._y,200,_root.sad.sy._y);//滚动滑块
}
_root.sad.sy.sy.onRelease=function () {
if (_root.shu==0) {//判断是内部加载还是外部加载
_root.mySound.setVolume((_root.sad.sy._x)/2)//设置音量
} else {
_root.ySound.setVolume((_root.sad.sy._x)/2)
}
stopDrag();//停止滚动
}
一样的道理设置好另外控制左右均衡的影片剪辑(_root.gd(影片剪辑名称).fgh(滑块名称).fsg(按钮名称).)
在gd中帧动作,设置脚本如下:

_root.gd.fgh.fsg.onPress = function () {
_root.gd.fgh.startDrag(false,0,_root.gd.fgh._y,200,_root.gd.fgh._y);//滚动滑块
}
_root.gd.fgh.fsg.onRelease=function () {
if (_root.shu==0) {//判断是内部加载还是外部加载
_root.mySound.setPan(_root.gd.fgh._x-100)//设置左右均衡值
} else {
_root.ySound.setPan(_root.gd.fgh._x-100)
}
stopDrag();//停止滚动
}
发布影片:
[flash=550,250]http://www.yingzihua.com/xx/images/flash/cs.swf[/flash]
由于加载路径不对,该教程正确地址为:http://www.yingzihua.com/xx/flash.htm

源文件下载地址为:http://www.cfjs.com/temp/sound.fla

TOP

图片的路径最好用闪吧的,将图片传到论坛也不费什么大事

TOP

呵呵:)
你可以看一下,我这人有缺点,就是有点篮,01年注册的会员,现在才发了几个帖子 ,平时在经典泡灌了!
呵呵:)
索性你帮个忙,传上去吧!

TOP

今天发现我少写了一句话:
引用:
我们如果从内部导入声音,其导出也是压缩格式,所以,我们使用内部导出声音的时候,也要使用WAV格式声音文件!

TOP

受教了! 谢谢楼主

TOP

好资料,好长时间没学习as了,复习了一下。

TOP

发新话题