Flash CS4 控制关键帧的音频
- 格式:doc
- 大小:595.72 KB
- 文档页数:2
FLASH CS4 控制音频播放在之前的章节中,已介绍了如何在Flash中加载声音。
Flash CS4除了加载声音外,还可以对声音播放进度进行一系列的控制,如播放、暂停、停止。
除此之外,还可以控制音量的大小。
1.停止声音在之前的章节中已经介绍了如何在Flash中播放音频。
在制作音频播放器时,除了需要播放音频外,还需要控制音频的停止。
这需要使用到flash.media包中的SoundMixer类。
SoundMixer是一种控制全局的类,其可以控制由Flash影片播放的所有声音流,并且拥有多种全局控制的属性和方法。
也是说,SoundMixer并不控制动态创建的Sound对象。
SoundMixer常用的属性主要有两种:●bufferTime 该属性的作用是设置声音流在开始传输前预加载的时间,单位为秒。
●soundTransform 该属性的作用是为SoundMixer对象引入控制全局的SoundTransform对象。
SoundMixer的这两种属性都属于静态方法,仅可以操作嵌入到Flash影片中的声音,无法对在ActionScript中动态创建的声音进行操作。
除了以上的属性外,SoundMixer还包含3种常用的方法。
●areSoundsInaccessible() 确定是否因安全限制而无法访问声音●computeSpectrum() 获取当前声音的波形快照,并将其放在指定的ByteArray对象中。
●stopAll() 停止当前播放的所有声音。
例如,在一个播放器中,停止播放的按钮实例名称为stopBtn,则为其添加的停止播放代码如下。
stopBtn.addEventListener(MouseEvent.CLICK,stopMusic);function stopMusic(event:MouseEvent):void{SoundMixer.stopAll();}需要注意的是,在使用stopAll()方法时,所引用的SoundMixer类本身,而不是该类的实例。
一、在时间轴中使用声音这是Flash中声音最常使用的方式,任何一本Flash教材都会讲到这个问题,所以只作简单说明。
在设置一个关键帧后,只要你导入了声音文件,在帧属性面板都能进行该帧的声音设置。
声音的同步属性(Sync)主要有以下几种:1.事件(Event)。
用这种方式设置的声音会独立于时间轴播放,只要你没有用其它方式中止,它会一直播放下去直到结束,其最大好处是可以用来设置一些类似循环的播放效果,只要你把它后面的循环属性(Loop)设置得足够大。
2.开始(Start)。
其特点是,当该帧开始播放,将停止动画中前面帧调用的声音,只播放当前帧中的声音。
3.停止(Stop)。
设置后,将立即停止播放当前帧的声音。
4.数据流(Stream)。
设置后,会使动一的播放与声音同步,如果动画下载速度跟不上声音,将跳过相关帧而保持与声音同步。
另外,如果在播放中设置了(Stop)动画停止,声音也将停止;但如果使用play()语句,声音又将从停止处接着播放。
二、用ActionScript语句调用声音Flash提供了强大的脚本编辑功能,几乎能与一些专门的编程语言相媲美,在多媒体方面可谓更胜一筹,用Flash脚本语言调用声音,在无论是效果还是灵活性,都值得一试。
1.加入声音导入外部声音,按Ctrl+L键,弹出库窗口,选中导入的声音,单击右键,在弹出菜单中选择“链接”菜单项,弹出“链接属性”对话框,先选中“为动作脚本导出”复选框,此时对话框上部的“标识符”一栏将变得可用,在其中输入其标识名,在此我们假设输入为“sd”,此标识将在程序中作为该声音的标志,故多个声音不得使用同一个标识符。
在Flash时间轴上的第一帧输入以下语句:mysong = new Sound()mysong.attachSound("sd")以上语句先定义一个声音事件mysong,再用mysound.attachSound("sd")语句将库中的声音附加到此声音事件上。
FLASH CS4 应用音频Flash中有两种声音类型:“事件声音”和“音频流”。
事件声音和音频流之间最大的区别不是声音文件本身的不同,而主要体现在动画播放过程中的不同。
事件声音必须完全下载后才能开始播放,除非明确停止,否则它将一直连续播放;音频流在前几帧下载了足够的数据后就开始播放,通过与时间轴同步以便在网络中播放。
1.将声音导入到库如果要在Flash文件中导入声音,可以执行【文件】|【导入】|【导入到库】命令,打开【导入到库】对话框。
然后选择并打开所需的声音文件,即可将其添加到【库】面板,如图12-1所示。
如果使用该声音,直接将其从【库】面板拖放到文档中即可。
图12-1 【库】面板中的声音元件将其从公用库中拖入到当前文档库中即可。
另外,需要将声音置于时间轴上的一个单独层上。
2.将声音添加到时间轴在Flash中要为影片添加声音文件,首先执行【插入】|【时间轴】|【图层】命令,为声音创建一个新图层。
然后选择新建的声音图层,将声音从【库】面板拖入到舞台中,声音就会添加到当前图层中,如图13-2所示。
图13-2 在文档中使用声音将每个声音放在一个独立的图层上,使每个图层作为一个独立的声音通道。
当播放影片时,所有层上的声音会混合在一起。
3.声音控制区在时间轴上,选择包含声音文件的任意帧,执行【窗口】|【属性】命令,打开【属性】面板。
然后,单击【声音】标签前面的箭头,以展开声音控制区域,如图12-3所示。
图12-3 声音控制区域在【效果】列表框中,不仅可以简单设置音频的效果,还可以通过【编辑封套】对话框精确制作所需的效果。
【效果】列表框中的选项如下所示:●无不对声音文件应用效果。
选中此选项将删除以前应用的效果。
●左声道仅播放左声道的声音。
此时单击【编辑声音封套】按钮,可打开【编辑封套】对话框,在上面一个波形预览窗口(左声道)中的直线位于最上面,表示左声道以最大的声音播放,而下面一个波形预览窗口(右声道)的直线位于最下面,表示右声道不播放,如图12-4所示。
FLASH动画制作中声音控制的方法和技巧作者:王红娟来源:《河南农业·综合版》 2014年第12期河南农业职业学院王红娟摘要:FLASH动画制作中声音的控制有一定的方法和技巧,如果图层选择不对或者关键帧做得不对,就会出现静音和重音的现象。
简单介绍了FLASH动画制作中声音的各种调节参数,分别介绍了相同页面与不同页面声音播放和停止的语句的运用,有利于我们在FLASH动画制作中对声音的控制。
关键词:FLASH动画制作;声音控制;方法技巧在动画中添加一段美好有趣的音乐会让动画更加精彩,目前FLASH声音已经被广泛应用于片头、网页中,而声音的控制则是FLASH动画制作的难点和重点。
因为在FLASH动画制作中,有相同页面的声音的播放和停止与不同页面的声音播放和停止的区别,在插入图层和添加帧时都有不同的语句相对应。
一、FLASH动画制作中声音的各种调节参数要想掌握FLASH动画制作中声音的控制方法,必先认识声音调节的各种参数,并且注意输入参数命令时要注意区分大小写,这样才能有效地完成声音的制作。
在FLASH动画制作声音的各种调节参数中,mySound是一个声音对象,在用as来控制声音之前,一定要先创建声音对象newSound。
有了新建的声音对象,再运用各种语句对声音的播放和停止进行控制。
命令参数如下。
(一)播放与停止(单位:秒)开始播放声音{mySound.start();},如果想在声音的第二秒中播放,可输入{Sound.start(2);},停止声音的播放{mySound.stop();}。
(二)音量控制(范围从0到100)获取当前的音量大小{mySound.getVolume();},设置当前音乐的音量{mySound.setVolume();}。
(三)左/右均衡(范围从-100到100)获取左右均衡的值{mySound.get-Pan();},设置左右均衡的值{mySound.setPan();}。
Flash CS4 控制声音播放在开始加载声音文件后,为Sound对象调用play()方法可以播放加载的声音。
play()方法的基本形式如下。
sound.play(startTime,loops,sndTransform);play()方法可以接受以上3个可选参数,其详细介绍如下所示。
●startTime 播放声音的起始位置(以毫秒为单位)。
●loops 定义在声道停止播放之前,声音循环回startTime值的次数。
该参数的最小值为0,即播放一次。
如果传递的值为负数,仍然播放一次。
●sndTransform 分配给该声道的初始SoundTransform对象。
play()方法返回一个SoundChannel对象,用于控制一种声音的播放。
可以将该对象的position属例如,加载外部的music.mp3文件,并侦听该声音文件的加载完成事件。
当加载完成时,调用onComplete()函数以开始播放声音。
import flash.events.Event;import flash.media.Sound;import .URLRequest;var sound:Sound = new Sound();var req:URLRequest = new URLRequest("music.mp3");sound.load(req);sound.addEventListener(PLETE, onLoadComplete);function onLoadComplete(event:Event):void{sound.play();}如果想要停止加载声音,可以使用Sound对象的close()方法。
该方法关闭声音流,从而停止所有数据的下载。
close()方法的基本形式如下所示。
sound.close();。
Flash里的声音控制Flash 里的声音控制有两种方法:1.把声音直接在拖倒时间轴上的关键帧里,然后在属性面版进行相关属性设置.需要注意几个同步方式的区别.事件(Event):将声音设置为事件,可以确保声音有效地播放完毕,不会因为帧已经播放完而引起音效的突然中断,制作该设置模式后声音会按照指定的重复播放次数一次不漏地全部播放完。
开始(Start):将音效设定为开始,每当影片循环一次时,音效就会重新开始播放一次,如果影片很短而音效很长,就会造成一个音效未完而又开始另外一个音效,这样就造成音效的混合而乱了。
停止(Stop):结束声音文件的播放,可以强制开始和事件的音效停止。
数据流(Stream):设置为数据流的时候,会迫使动画播放的进度与音效播放进度一致,如果遇到机器的运行不快,FLASH电影就会自动略过一些帧以配合背景音乐的节奏。
一旦帧停止,声音也就会停止,即使没有播放完,也会停止。
注意:其中应用最多的是事件选项,它表示声音由加载的关键帧处开始播放,直到声音播放完或者被脚本命令中断。
而数据流选项表示声音播放和动画同步,也就是说如果动画在某个关键帧上被停止播放,声音也随之停止。
直到动画继续播放的时候声音才开始从停止处开始继续播放,一般用来制作MTV2.用AS控制.要先创建声音对象,关联某个声音,然后运用声音对象的方法进行操作.For example: mysound=new Sound(); //创建声音对象mysound.attachSound("sound1"); // 链接声音sound1. 这里要先对声音的链接属性进行设置,两个选项(a.为ActionScript 运行导出 b. 在第一帧导出)都要打勾.标识符不能为空,在as中对声音的引用要用到.这里标识符是sound1.mysound.start(); //声音开始播放.Sound functions: <1> mysound.start(offsettime,loop) //offsettime:时间偏移量,单位s. loop,循环次数.这句话表示声音从offsettime开始播放到声音结束,播放loop次.(BTW,做声音开关的时候,本来想通过offsettime来让动画和声音同步的,发现根本不好用.特别是声音文件导出时如果压缩了,那通过这个来同步更是没戏.<2>mysound.stop();<3>mysound.setVolume(volume); volume:0-100. 0是最低音量,100最高.(通过按钮操作,设置音量做声音开关时发现,点击按钮,改变音量时,声音会从头开始播放,根本不是只改变当前时间及以后播放的声音音量)<4>mysound.getVolume();<5>mysound.setPan(pan) pan: -100到100 .这个是左右声道均衡值.<6>mysound.getPan()<7>mysound.duration() //声音持续播放时间<8>mysound.position() //声音播放的当前时间<9>mysound.onSoundComplete() {mysound.start();} //通过这个语句可以让声音无限制循环.mysound.onSoundComplete(){}//是声音结束时需要执行的操作还有两个系统函数:getTimer() 获取动画播放的时间stopAllSounds() 合理应用上面的声音对象方法或函数能够满足flash 对声音控制的一般需求.比如,1.可以做声音开关.简单的控制声音的播放和停止.2.做暂停按钮,(flash本身没有提供暂停的函数)用mysound.position() 记录声音停止时的位置,下次播放的时候从这个位置播放.3.背景音乐的无限循环.mysound.onSoundComplete() {mysound.start();} 经典案例:我做一个flash ,遇到这样的需求:我的音乐比较长且完整而且需要和画面配合,不是简单的声音循环.又需要做个声音开关按钮,开关控制声音播放时,声音要从和画面同步的声音处开始播放而不能从头开始播放.这样的话按钮代码on(press) {mysound.start();} 肯定是不能满足需求了.于是我试图通过下面几种方法解决问题:方法一:1.在动画开始时定义一个变量并赋值. var starttime=getTimer(); // record the start time of flash2.在按钮"on"上增加这样的代码:on(press){r_time=(getTimer()-starttime)/1000; //想获得动画从开始到点击按钮时总共播放的时间.getTimer()获得的时间单位是ms.mysound.start(r_time,1); //声音从r_time处开始播放.循环一次}照理说,这样应该让声音同步才是,但事实结果是声音和动画在声音关闭--再次开始播放后无法同步.方法二:通过设置声音音量来做声音开关.我想着这种方法只是改变一下音量,并没有让声音真正停止,声音应该和动画同步播放才是.事实结果是---声音会从头播放,无法同步.也不能达到我的要求.开关按钮代码:on(press){ //stop buttonmysound.setVolume(0);}on(press){ //play buttonmysound.setVolume(100);}很奇怪的是,声音也有fade in 和fade out .也就是说volume 能够动态改变的,不明白这样为什么还是不行.最后网上的一片文章给了我灵感.我通过下面的方法解决了我的问题.1.创建一个mc,把声音sound1拖倒mc的时间轴上.同步方式为数据流.(上面说过了,数据流能让声音和动画很好的同步.相当于声音流和每帧绑定)mc的帧长和我在主场景需要的声音帧长相同.2.在主场景创建mc实例.实例名:sd.持续帧长和mc的帧长相同.3.在主场景添加声音开关按钮,并添加按钮代码.on(press){ //stop按钮sd.gotoAndStop(455); //455 帧是我mc的最后一帧,这帧已经没有声音}on(press){ //play buttonsd.gotoAndPlay(_root._currentframe); //声音从主场景的当然帧这个时间开始播放}ok ,这样就能满足我的需求,解决我的问题拉!Happy 一下:)心得:其实最后这个方法是一个很巧妙而且折中的方法.巧妙的将as 控制声音和时间轴引用声音结合在了一起.时间轴上引用声音,能够设置数据流同步方式,将声音和动画绑定,保证了很好的同步.把声音做成mc ,让按钮发挥了很好的作用.通过控制mc从而控制声音的开关.。
Flash动画中音频的设置摘要:音频是多媒体的重要组成元素,恰当、灵活地运用音频往往是多媒体作品的成败关键。
Flash作为人们喜爱的多媒体工具,其音频的使用方式也丰富多样。
本文探讨了在Flash中对音频的设置,包括音频的导入、属性设置,编辑等。
关键词:音频;多媒体;Flash;0 引言Flash是美国的Macromedia公司于1999年6月推出的优秀网页动画设计软件。
它是一种交互式动画设计工具,用它可以将音乐,声效,动画以及富有新意的界面融合在一起,以制作出高品质的网页动态效果。
Flash是以时间轴为特征的动画制作软件,制作时各类人物、场景、音乐等元素众多,要使人物、场景、声音、文字等元素同步,需要长时间的调试。
运用各种声音控制技术,如直接导入声音法,运用脚本语言编写代码等,让画面跟音乐的节奏吻合,情节与旋律相一致。
声音与动画画面同步才是好的Flash作品。
1 Flash动画中的音频随着计算机技术的飞速发展,以计算机技术为基础的多媒体技术也在生活中扮演了越来越重要的角色。
音频是多媒体的重要组成元素,恰当、灵活地运用音频往往是多媒体作品的成败关键。
Flash作为人们喜爱的多媒体工具,其音频的使用方式也丰富多样。
音频是Flash 动画作品中的一个不可缺的元素,其中包括背景音乐、按钮音效、配音等,都对Flash动画起到非常大的作用。
音频的加入可以使Flash在有色的基础上体现声音,从而使Flash动画更具多媒体的特性。
2 Flash动画中音频的设置2.1 音频文件格式Flash提供了许多使用声音的方式。
可以使声音独立于时间轴连续播放,或使动画与一个声音同步播放。
还可以向按钮添加声音,使按钮具有更强的感染力。
另外,通过设置淡入淡出效果还可以使声音更加优美。
Flash支持的音频文件格式如表1所示。
表1 Flash支持的音频文件格式项目名称:西安工业大学北方信息工程学院教学改革研究项目(编号:YJ1318Z)由于声音文件本身比较大,会占有较大的磁盘空间和内存,所以在制作动画时尽量选择效果相对较好、文件较小的声音文件。
flash中声音的控制代码简单播放音乐1. 首先打开新的Flash文件, 把声音导入库中(还摸不清介面的朋友就按ctrl+r)2. 导入之后到库中定义声音的ID, 如图:*** 这里的ID和场景上的实体名是不一样的***3. 接下来就在第一帧编写代码, 如下mySound = new Sound(); //定义声音类mySound.attachSound("tomato"); //提取库中我们所设定的ID mySound.start(); //开始播放声音4. 测试结果..音乐的开始, 停止和循环mySound.start([Secondsoffset], loop);start当中的两个参数分别为Secondsoffset, Seconds就是秒数而offset就是抵消或取消的意思...所以简单的说就是取消开始播放,以秒数来计算... 没有定义的话就是0, 另外一个loop就是循环了... mySound.start(5, 99);这个意思就是音乐从第5秒开始播放, 并循环99次, 这里提供了个例子为mySound.start(0,99);点击浏览该文件mySound.stop();mySound.stop("tomato"); //如果new Sound没有定义的话就这样使用, 不然多个声音会全部停止这个很简单不用解释了吧...就是停止音乐我们看到某些网站所使用的一个按钮控制播放和停止的效果就是使用这些就可以达成了, 如:mySound = new Sound();mySound.attachSound("tomato");mySound.start(0,99); //音乐开始播放并循环99次var music = true; //定义一个变量记录目前音乐是否是在播放, 因为音乐已经播放所以设定为truebtn.onRelease = function() {if(music) { //当变量为true时就表示音乐是在播放mySound.stop(); //使用stop设定音乐停止music = false; //变量记录false为音乐停止} else { //以下的和以上相反mySound.start(0,99);music = play;}}setPan和setVolumemySound.setPan(pan);pan的值是介于-100 到100, 用意在于设定喇叭的平衡 (100)只能左边的喇叭听到声音, 100为右边的, 而0就是平衡点, 两个喇叭都能听到声音例如:mySound = new Sound();mySound.attachSound("tomato");mySound.start(0, 10);var speaker = -100; //变量设定为-100, 即是从左边喇叭开始mySound.setPan(speaker); //设定喇叭平衡function pan() { //设定函数并通过setInterval每秒调整平衡speaker += 20; //每秒平衡偏移20mySound.setPan(speaker); //设定喇叭的平衡if(speaker > 100) { //当音乐完全偏移到右边喇叭播放的时候就停止mySound.stop();clearInterval(p);}}var p = setInterval(pan, 1000); //开始每秒执行喇叭平衡mySound.setVolume(volume);volume为0 - 100, 0为静音, 100为最大mySound = new Sound();mySound.attachSound("tomato");mySound.start(0, 99);var top = key.vol._y; //定义拖动按钮的最高点var left = right = key.vol._x; //定义拖动左右的范围var bottom = key.vol._y+100; //定义拖动按钮的最低点key.vol.onPress = function() {this.startDrag(true,left,top,right,bottom); //按钮按下拖动范围}onEnterFrame = function() {v = int(key.textInput.value.text); //取得输入框内的值mySound.setVolume(v); //设定音量}Position, Duration 和暂停mySound.position();唯读指令, 主要是取得目前播放音乐的毫秒数(1秒= 1000毫秒), 在音乐播放之后才能够取得, 在一开始start()之后使用是无法取得的mySound.duration();唯读指令, 主要是取得音乐的总毫秒数要使音乐暂停, 播放的时候再继续之前暂停的位置开始播放, 我们可以先取得按钮按下暂停时的position以取得位置, 然后再次按下播放的时候就使用start()当中的SecondsOffset使音乐从暂停的部分开始播放, 如:mySound = new Sound();mySound.attachSound("tomato");varSecondsOffset = 0; //设定SecondsOffset为0p1.onRelease = function() {mySound.start(SecondsOffset, 0); //播放按钮按下开始从0offset播放}p2.onRelease = function() {SecondsOffset = mySound.position/1000; //暂停按钮按下时记录目前位置并换成秒数mySound.stop(); //音乐暂停}onEnterFrame = function() { //这里是循环部分if(mySound.position == mySound.duration) { //如果播放的毫秒数等于音乐总毫秒数mySound.start(0, 99); //开始循环播放99次}}只要会了以上的方法, 倒退播放和快速播放就非常简单了, 如下:1. 场景上建立两个按钮, 分别为(倒退rev 和快速播放ff)2. 在第一帧使用以下代码:mySound = new Sound();mySound.attachSound("tomato");mySound.start();varSecondsOffset = 0;var reverse = foward = false; //设定倒退和前进变量为false onEnterFrame = function () {if (reverse &&mySound.position> 0) { //当倒退按下且音乐秒数大于0mySound.stop(); //音乐停止SecondsOffset -= .5; //offset倒退0.5秒mySound.start(SecondsOffset, 0); //音乐从倒退的0.5秒开始播放}if (foward&&mySound.position<= mySound.duration) { //当快速播放按下且音乐不为结束mySound.stop();SecondsOffset += .5; //offset前进0.5秒mySound.start(SecondsOffset, 0);}rev.onPress = function() { //当倒退按下并取得position SecondsOffset = mySound.position/1000;reverse = true; //reverse变量为true};rev.onRelease = function() { //当倒退放开就设定reverse变量为falsereverse = false;}ff.onPress = function() { //同上SecondsOffset = mySound.position/1000;foward = true;};ff.onRelease = function() {foward = false;}};至于loadSound部分就写一下进度条的写法1. 在场景上建立一个为100%长度的MC(loadBar)2. 在第一帧使用以下代码:onLoad = function () {mySound = new Sound();mySound.loadSound("tomato.mp3"); //载入同一目录中的MP3 var percent = 0; //%一开始为0loadBar._xscale = percent; //进度条的宽度比例为percent };onEnterFrame = function () {mySoundBytesTotal = mySound.getBytesTotal(); //取得文件的sizemySoundBytesLoaded = mySound.getBytesLoaded(); //取得目前文件所载入的sizepercent =int(mySoundBytesLoaded/mySoundBytesTotal*100); //计算出文件所载入的比例loadBar._xscale = percent; //设定进度条宽度比例if (percent>=100) { //当完全载入之后delete onEnterFrame; //删除循环mySound.start(); //音乐开始播放}};Q1. 为何loadMovie当中的swf音乐无法播放?ans: 只要在swf当中把mySound = new Sound() 换成mySound = new Sound(this) 就可以了Q2. 为何不能同时设定两首音乐不同的音量? ans: 一般你们会这样使用ASmySound1 = new Sound();mySound1.attachSound("tomato1");mySound1.start();mySound2 = new Sound();mySound2.attachSound("tomato2");mySound2.setVolume(50); //另外一首音量为50 mySound2.start();但这样是错误的, 正确方法是分别把音乐分开在不同的层当中: mySound1 = new Sound(this);mySound1.attachSound("tomato1");mySound1.start();createEmptyMovieClip("mc", 0);mySound2 = new Sound(mc);mySound2.attachSound("tomato2");mySound2.setVolume(50);mySound2.start();。
Flash CS4 控制关键帧的音频
将声音添加到音频层上指定的关键帧,就可以为关键帧上的动画配音,并且能够控制关键帧的音频的播放和停止时间。
要使音频与场景中的某个事件配合,可以先选择该事件发生的起始关键帧作为音频的起始关键帧,再将声音添加到该帧上,同时,还可以选择一种同步方式。
然后,在音频层的时间轴上再创建一个关键帧,作为声音的终点关键帧,此时在音频层的时间轴中将出现音频线。
选择终点关键帧,在【属性】面板的【名称】下拉列表框中选择与起点关键帧相同的声音文件,然后,在【同步】下拉列表框中选择【停止】选项。
这样在播放动画时,播放到该终点帧处,声音就会停止播放。
选择 拖入到舞台
插入关键帧
音频线 选择 选择 选择。