上一节我们讲解了如何在Flash中插入声音并播放它。本节我们接着讨论声音的使用。
一、使用导入到库中的声音制作 1、按照上节课的方法,将mp3音乐导入到库中后,我们如下操作 2、 注意:截图中的双击直接写文字功能是从flashCS4才引入的。如果你用的flash版本小于等于flashCS3,需要按照下面的方法操作 3、加入的代码如下: 本帖隐藏的内容需要回复才可以浏览 4、按Ctrl+Enter键测试影片即可听到声音。 代码讲解: (1)var是专门用来定义变量的函数 在这里我们定义了一个名为mymusic的变量 后面的=并不是数学中用的“等于号”,它被称之为“赋值号”,它的作用是把=右边的赋值给左边 因此,第一行代码就解释为:“定义了一个名为mymusic的声音变量” (2)attachSound是用来链接库中的声音文件的。【括号中双引号里面的就是连接的声音文件的标识符sgs)】 在这个函数与我们自定义的函数mymusic之间有个点,这个点的意思是说,点后面的属性是从属于点前面的元件的。 因此,第二行代码就解释为:“将我们定义好的mymusic声音变量链接到库中id(标识符)为sgs的声音文件” (3)start开始播放这个声音 括号中有两个数值【留空的话就是简单的播放一遍这个音乐了】 前面的10代表从第10秒开始播放 后面的5表示重复播放5次 由此可见,使用代码的手段管理声音,是多么的简单、高效。推荐大家使用。
最近访问本帖者列表: | |||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
二、接上例,控制声音的音量大小
只要在二、三行代码之间加上下面的代码 mymusic.setVolume(60) 就可以了。60就是声音的百分比大小【音量是源文件的60%】 三、如果我们要自由控制声音的播放与停止,又当如何? 答案是:在舞台中增加两个按钮,单击其中一个按钮时播放音乐,单击另一个时停止播放音乐。现在我们新建一个文档操作: 1、将音乐文件导入到库中,设置其id(标识符)为sgs 2、制作“播放”和“停止”两个按钮 【可以从公用库内直接调用合适的,然后修改一下即可】 3、开始写代码 (1)在时间轴的第一帧上按F9键加如下代码: var mymusic = new Sound(); mymusic.attachSound("sgs"); (2)用选择工具单击舞台上的“播放”按钮,加代码【一定要加在按钮上,不要加在帧上】: on (press) { mymusic.start(); } (2)同理,在“停止”按钮上加AS: on (press) { mymusic.stop(); } 4、按Ctrl+Enter键测试影片。 测试时发现,我们需要的效果已经实现。但是,当我们连续多次单击“播放”按钮时,会发现音乐又叠加在一起播放。因此,需要在播放按钮上再加一行代码mymusic.stop()变成下面的样子就可以啦: on (press) { mymusic.stop() mymusic.start(); } 代码讲解: ①这里用到了代码on。在按钮上加代码时必须使用on函数。on之后括号中必须带上参数。参数共有8个【详细的介绍看本节末尾处的附录】,我们使用的是press。它的意思是当用鼠标单击这个按钮时,执行大括号中的命令。 ②mymusic就是我们自定义的声音函数。它后面的点就是设置一下这个声音的属性 start()播放这段声音【括号里可以加参数,前面有讲过,大家可以看看】 stop()停止这段声音 5、纳尼?阁下认为播放按钮需要修正一下下? 或许如下修改可以满足你: ①播放按钮修改为: on (press) { if(kg!=1){ mymusic.start(); kg=1 } } ②停止按钮修改为: on (press) { mymusic.stop(); kg=0 } 是不是很奇妙?这里利用了AS2的一个特性--变量可以不经定义直接使用 我设置了一个名为kg的变量,因为根本不存在这个变量,所以if(kg!=1)的返回值一定是真,那么第一次单击播放按钮的时候肯定会播放音乐。同时让kg=1,这样kg变量就存在了,而且被赋值为1.当我们第二次单击播放按钮的时候,if(kg!=1)的返回值就变成了假,故而不会重复播放音乐。 最后,当观众单击停止按钮的时候,由于在停止按钮上多加一行代码kg=0 所以,当观众继续单击开始按钮的时候,if(kg!=1)的返回值就是真,就会开始播放音乐了! 该技巧在AS3内不再适用。因为AS3的变量必须先定义,才可以使用。 至此,效果已近完美。但是为了实现更逼真的效果,我们有必要在播放界面上加上跳动的长条。然后,为了实现播放多首音乐,我们还需要再加上几个按钮控制。还有,播放时的音量如果可以控制的话,岂不更完美?这些效果的实现我们会在下一讲详细讨论。 | |
附录:(摘自Flash8帮助文档)
press 当鼠标指针滑到按钮上时按下鼠标按钮 release 当鼠标指针滑到按钮上时释放鼠标按钮 rollOut 鼠标指针滑出按钮区域 rollOver 鼠标指针滑到按钮上 dragOut 当鼠标指针滑到按钮上时按下鼠标按钮,然后滑出此按钮区域 dragOver 当鼠标指针滑到按钮上时按下鼠标按钮,然后滑出该按钮区域,接着滑回到该按钮上。 releaseOutside 当鼠标指针滑到按钮上时按下鼠标按钮,然后在释放鼠标按钮前滑出此按钮区域。 keyPress "< key > " 按下指定的键盘键。对于该参数的 key 部分,请指定一个键常数,如"动作面板"中的代码提示所示。可以使用这个参数来截取某个按键,也就是说,覆盖所指定键的任何内置行为。该按钮可以在您的应用程序中的任何地方,可以在舞台上或不在舞台上。此技术的一个局限是不能在运行时应用on()处理函数;您必须在创作时应用它。请确保选择"控制">"禁用键盘快捷键",否则在使用"控制">"测试影片"测试应用程序时某些具有内置行为的键不会被覆盖。 press 和 dragOut 事件始终在 releaseOutside 事件之前发生。 | |