前往顾页

Flash声响代码详解

时候:2010-07-11 14:47来源:知行网www.zhixing123.cn 编辑:麦田守望者

Flash声响节制详解2008-02-14 10:55声响是多媒体的首要构成元素,得当、矫捷地应用声响常常是多媒体作品的成败关头。Flash作为人们

喜好的多媒体东西,其声响的利用体例也丰富多样,本文切磋了在Flash中利用声响的几种环境,希望能

对年夜家有所帮忙。


一、在时候轴中利用声响
这是Flash中声响最常利用的体例,任何一本Flash课本都会讲到这个问题,所以只作简朴申明。


在设置一个关头帧后,只需你导入了声响文件,在帧属性面板都能进行该帧的声响设置。声响的同步属

性(Sync)首要有以下几种:


1.事件(Event)。用这类体例设置的声响会自力于时候轴播放,只需你没有效别的体例中断,它会一

直播放下去直到结束,其最年夜好处是可以用来设置一些近似循环的播放结果,只需你把它前面的循环属

性(Loop)设置得充足年夜。


2.开端(Start)。其特性是,当该帧开端播放,将停止动画中前面帧调用的声响,只播放以后帧中的

声响。


3.停止(Stop)。设置后,将当即停止播放以后帧的声响。
4.数据流(Stream)。设置后,会使动一的播放与声响同步,如果动画下载速率跟不上声响,将跳过相

关帧而保持与声响同步。别的,如果在播放中设置了(Stop)动画停止,声响也将停止;但如果利用

play()语句,声响又将从停止处接着播放。


2、用ActionScript语句调用声响
Flash供应了强年夜的脚本编辑服从,几近能与一些特地的编程说话相媲美,在多媒体方面可谓更胜一筹,

用Flash脚本说话调用声响,在不管是结果还是矫捷性,都值得一试。


1.插手声响
导入外部声响,按Ctrl+L键,弹出库窗口,选中导入的声响,单击右键,在弹出菜单当挑选“链接”菜

单项,弹出“链接属性”对话框,先选中“为行动脚本导出”复选框,此时对话框上部的“标识符”一

栏将变得可用,在此中输入其标识名,在此我们假定输入为“sd”,此标识将在法度中作为该声响的标

志,故多个声响不得利用同一个标识符。


在Flash时候轴上的第一帧输入以下语句:
mysong = new Sound()
mysong.attachSound("sd")
以上语句先定义一个声响事件mysong,再用mysound.attachSound("sd")语句将库中的声响附加到此声响

事件上。


2.声响的播放与停止
在需求播放的帧插手“mysong.start()”语句可让声单播放。
需求停止时,插手“mysong.stop()”语句则可。
3.调用外部声响文件
Flash可以在播放时静态加载外部mp3文件,此体例既为多媒体设想供应了更年夜的矫捷性,也能有效地减

小作品所占的磁盘空间。实现体例以下(假定同目次下有music.mp3文件):


mysong=new Sound()
mysong.loadSound("music.mp3",false)
申明:第一行语句建立一个声响事件或声响流,第二即将music.mp3加载到声响事件事声响流上,

loadSound()语句中的false为可选能数,为false时表示mysound为声响事件,为true时表示mysound为声

音流,建议利用声响事件,以便于节制;如果利用声响流,则声响停止后将不克不及再用mysond.start()播

放。


3、声响循环播放
前面说过,在时候轴上设置关头帧的声响同步属性为Event时,输入充足年夜的循环次数,可使声响产生类

似循环播放的结果,但是,这类循环仅是近似罢了,一者次数再多,总有播放结束的时候;二者一旦停

止,就很难再次播放。下面,向年夜家介绍一种用代码实现的真正循环,并且,还可用一个按钮实现声响

的播放也停止切换,想播就播,想停就停,岂不快哉。


我们可在时候轴的第一帧插手以下代码:
mysong = new Sound()
mysong.attachSound("sd")
mysong.onSoundComplete = function() {
mysong.start() }
以上代码的第三行是实现循环的关头,它建立了在调用 onSoundComplete 事件时履行的函数,

onSoundComplete 为声响播放结束时主动调用的事件,如许,当声响播放结束后主动履行mysong.start

(),使声响不竭播放。如果声响播放时被代码停止( mysong.stop() ),声响是不会反复播放的。


将以上代码插手到一个按钮的行动中并略加窜改,便成为一个节制声响播放与停止的切换按钮。


先在时候轴第一帧代码后加上:
mysong.play() //使声响在动画开端时播放
var soundkey=1 //定义变量soundkey,监督声响播放环境
然后在时候轴上拔出一个新层,放一个按钮在下面,选中按钮,按疾速键“F9”,调出行动编辑窗口,

输入以下代码:


on(release){
soundkey=-soundkey //使变量值为原值相反数
if(soundkey==1){
mysong.stop()
mysong.start()
}
//如果soundkey值为正,则播放声响,mysong.stop()使声响停止后再播,以避免声响产生叠加,影响结果


if(soundkey==-1){
mysong.stop()
}
//如果soundkey值为负,则声响停止

 


先做个简朴的体味,FLASH中经常常利用到的声响的节制号令和声响的属性有哪些:
1.new Sound()//建立一个新的声响工具;
2.mysound.attachSound()//加载库里的声响
3.mysound.start()//播放声响;
4.mysound.getVolume()//读取声响的音量
5.mysound.setVolume()//设置音量
6.mysound.getPan()//读取声响的均衡值
7.mysound.setPan()//设置声响的均衡值
8.mysound.position//声响播放的以后地位
9.mysound.duration//声响的总长度;

 

mysound.start(0,10);//开端播放声响,从第0秒开端,反复10遍
_root.total=int(mysound.duration/1000/60)+"分"+""+(int(mysound.duration/1000)-int

(mysound.duration/1000/60)*60)+"秒"//这里是在total文本框内显现音乐的总厂,详细的道理参看注

意点3;
_root.onEnterFrame=function(){//每播放一帧都触发下面的函数;
mysound.setVolume((a._x-30));//设置音量,30为音量线的最左端坐标,音量线总长为100,a._x

表示滑块的X坐标,该坐标减去初始地位的坐标30就获得以后应有的音量;
mysound.setPan((b._x-80)*2);//设置以后声响的均衡值,相对均衡线的中间地位坐标(80)进行

调度,范围(-100,100),-100为左声道作声,100为右声道,0为摆布均衡;
txt1=mysound.getVolume();//读取以后音量并在txt1文本框内显现
txt2=mysound.getPan();//读取以后均衡值并在txt2文本框内显现
}
k=0;//初始化k变量,其感化将鄙人面申明;
_root.bb="正在播放";//让bb文本框显现正在播放字样;

2.节制音量的滑块上的代码:


on(press){
startDrag(a,true,30,147,130,147);//按下按钮不放,则开端拖动滑块a,拖动范围 左上右下依次为

:30,147,130,147。这些数值的获得体例,你可以在源文件呼应元件的属性面板里看到;
}
on(release){
stopDrag();//松下按钮则停止拖动
}
3.节制均衡的滑块上的代码:

on(press){
startDrag(b,true,30,179,130,179);//按下按钮不放,则开端拖动滑块a,拖动范围 左上右下依次为

:30,179,130,179。
}
on(release){
stopDrag();//松下按钮则停止拖动
}
4.停息按钮的代码:


on(release){
k=k+1;//k是用来统计以后点击停息按钮次数的变量;
if(k%2==1){//奇偶判定;
mysound.stop();//若为奇数则停止音乐;
_root.b=int(mysound.position/1000);//记录下停止时播放的地位,赋值给变量b;
_root.bb="停在第"+_root.b+"秒";//在bb文本框内显现以后停止的地位;
}else{
mysound.start(_root.b);//从上一次停止的地位开端继续播放;
_root.bb="正在播放";
}
}
5.停止按钮上的代码:


on(release){
mysound.stop();//停止音乐
_root.bb="已停止";//显现音乐停止;
_root.b=0;//点击次数清零;以便下次统计;
_root.k=1//这点的解释参看重视点1;
}
6.播放按钮的代码:


on(release){
mysound.stop()//为了不以后正在播放音乐的音乐和再次开端的音乐反复,所以先停止以后音乐;
mysound.start();//开端播放新的音乐
_root.bb="正在播放";
k=0//关于这里为甚么从头给k赋值,请参看最后的重视点2;
}
重视:
1.把这里的k赋值为1,是为了让音乐停止后,断根前面对停息按钮的操纵引发的k值的转变,并且可让

下一步点停息按钮的时候,让其履行mysound.start(_root.b),从而具有播放按钮的服从,因为方才执

行了停止号令。再履行停息号令是没成心义的!

2.把k从头赋值为0,是为了断根前面对停息按钮的操纵引发的k值的转变.读者朋友可以去除这句,然

后测试,你会发明点了播放按钮后再点停息按钮,会有两个声响稠浊在一路,这个BUG的呈现,恰是因为

k值在捣蛋,详细的讲,当你进行了多少操纵,把k的值变成奇数后,在点播放按钮,此时音乐开端播放

,然后你再点下停息按钮,这时候辰的k值为偶数,那么会履行mysound.start(_root.b),也就是再开端播

放一个音乐,从而导致两个声响稠浊的征象;

 

------分开线----------------------------
标签(Tag):FLASH FLASH实例教程 flash教程 flash实例
------分开线----------------------------
保举内容
猜你感兴趣