Flash中用按钮控制声音的几种方法
Flash课件中声音控制的几种方法(学习几点心得)
      在中小学教师开发的课件中,用Flash制作的比例越来越大,而声音作为多媒体课件的重要组成部分,应用得合理与否直接影响到课件整体艺术力的表现。在八月份的第一期Flash课件制作培训时,我们讲了两种应用声音的控制方法,一种是导入时间轴,用play,stop等命令进行简单控制;另一种是利用组件工具来控制声音的播放。显然,这两种方法是简单的、易掌握的,但能实现的功能却有所局限。本文整理了Flash声音控制的另外两种方法,希望对课件制作爱好者有所帮助。 
      一、用 Sound 类的 start 方法 
      很多人在制作一个带配音的 Flash
      课件时,会设计了两个按钮,一个按钮控制音乐的播放,另一个按钮控制声音的停止。当单击按钮让音乐停止后,再次单击控制音乐播放的
      按钮,音乐却从头开始播放了。这里可以用 Sound 类的 start 方法来控制音乐播放。 
      用 Sound 类的 start
      方法来播放音乐必须给出必要的参数,通过参数控制音乐从停止处开始播放。否则,音乐就是直接从头开始播放。用sound类的position属性和start方法结合在一起就可以解决这个问题。具体操作步骤是:
     
      (1)将音乐导入到“库”中。右击“库”中的音乐对象,在弹出的快捷菜单中选择“链接”命令,打开“链接属性”对话框,勾选“为动作脚本导出”和“在第一帧导出”复选项,
      设置标识符为“mySound”。
        (2)在第 1帧上添加如下脚本:
      myMusic = new Sound();//建立一个名为 myMusic的声音对象 ,
      myMusic.attachSound("mySound"); //将链接标识符为 mySound的音乐捆绑到 myMusic对象上 。
        (3)在播放音乐的按钮上添加如下脚本:
      on (press) {
      var t=myMusic.position/1000; //计算声音当前播放的位置
      myMusic.start(t); //从当前位置开始播放
          position 是 Sound
      类的一个属性,可以获得声音对象播放的当前位置。在制作Flash动画时,这个属性经常会被用到。比如制作MP3播放器,如果制作一个控制音乐播放进度的滑块,那么就可以用这个属性来实现相应的算法。 
      (注意:在操作时要注意字母的大小写)
 
      二、利用影片剪辑来控制声音 
        (一)  导入声音素材 
flash按钮制作      点击【文件】|【导入】|【导入到库】菜单命令,在弹出的【导入到库】对话框中,到你要导入的声音文件,选中后点击打开按钮,将声音导入到库。 
      (三)制作声音影片剪辑元件: 
      (1)点击【插入】|【新建元件】菜单命令,在弹出的新建元件对话中,名称输入“声音”、行为选【影片剪辑】,确定。 
      (2)选中“图层1”的第1帧,打开属性面板,在声音设置的对话框中,选择你导入的声音件,并在同步选项中选择数据流,如图1所示。 
                                       
      图1 
      (3)把声音文件在时间轴上展开。 
      (4)回到场景,把“声音”影片剪辑元件提到舞台,此时声音影片剪辑元件在舞台只看到一个注册点,用黑箭头工具点击注册点,(选中声音元件)打开属性面板,在属性面板
中输入实例名“yinyue”,如图2所示。 
      图2 
      (四)制作声音控制元件 
      (1)点击【插入】|【新建元件】菜单命令,在弹出的新建元件对话中,名称输入“播放和暂停”、行为选【影片剪辑】,确定。 
      (2)把“图层1”命名为“按钮”,在此图层的第1帧中,执行【窗口】|【其它面板】|【公共库】|【按钮】菜单命令。提进一个按钮,用来控制“播放”。 
      (3)给播放按钮添加命令: 
      on (release) { 
          gotoAndStop(3); 
          _root.yinyue.play(); 
      } 
      (4)在按钮图层的第3帧中插入空白关键帧,在此空白关键帧中,执行【窗口】|【其它面板】|【公共库】|【按钮】菜单命令。提进一个按钮,用来控制“暂停”,并在第4帧中按F5插入普通帧。 
      (5)给暂停按钮添加命令: 
      on (release) { 
          gotoAndStop(1); 
          _root.yinyue.stop(); 
      } 
      (5)添加图层二,命名为“AS”在“AS”图层的第2帧和第4帧分别输入命令:stop();此时的时间轴面板如图3所示: 
      图3 
      (五)场景组装 
      (1)回到场景,从库里把“播放和暂停”元件提进舞台,放到适当的位置。选中“播放和暂停”元件,打开属性面板,在属性面板中输入实例名“yinyue”,如图4所示。 
     
      图4 
      (2)在公用库中提入一个按钮用来控制“停止”,点击“停止”按钮,打开动作面板,添加命令: 
      on (release) { 
          _AndStop(1); 
          _AndStop(1); 
      } 
      (3)添加图层二,在“图层二”的第1帧输入命令:_root.yinyue.stop(); 
      (六)测试影片并保存。 
这部分内容可参考:www.ha.e21/Article/ShowArticle.asp?ArticleID=3863
音乐的重复播放
1、首先,将音乐导入库。然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。
2、在时间AS层写下如下代码:
mymusic= new Sound()
mymusic.attachSound("aaa")
SoundComplete = function() {
mymusic.start() } /*声音播放完毕时自动调用的事件,
这样,当声音播放完毕后自动执行mymusic.start(),使声音不断播放。
如果声音播放时被代码停止(mymusic.stop() ),声音是不会重复播放的。 */
mymusic.play() //使声音在动画开始时播放
var soundkey=1 //定义变量soundkey,监视声音播放情况 。
3、在主场景中拖入一个按钮,在按钮上写下如下代码:
on(release){
      soundkey=-soundkey//使变量值为原值相反数
      if(soundkey==1){
      mymusic.stop()
      mymusic.start()
        } /*如果soundkey值为正,则播放声音,mymusic.stop()使声音停止后
  再播,以免声音产生叠加,影响效果*/
      if(soundkey==-1){
        mymusic.stop() 
        }            //如果soundkey值为负,则声音停止
}
至此完成,按ctrl+enter测试。
音乐的重复播放
1、首先,将音乐导入库。然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。
2、在主场景中拖入一个按钮,将按钮命名为bofang_btn。
3、在时间AS层写下如下代码:
mymusic= new Sound()
mymusic.attachSound("aaa")
SoundComplete = function() {
mymusic.start() } /*声音播放完毕时自动调用的事件,
这样,当声音播放完毕后自动执行mymusic.start(),使声音不断播放。
如果声音播放时被代码停止(mymusic.stop() ),声音是不会重复播放的。 */
mymusic.play() //使声音在动画开始时播放
var soundkey=1 //定义变量soundkey,监视声音播放情况 。
Press=function(){
      soundkey=-soundkey//使变量值为原值相反数
      if(soundkey==1){
      mymusic.stop()
      mymusic.start()
        } /*如果soundkey值为正,则播放声音,mymusic.stop()使声音停止后
  再播,以免声音产生叠加,影响效果*/
      if(soundkey==-1){
        mymusic.stop() 
        }            //如果soundkey值为负,则声音停止
    } 
//至此完成,按ctrl+enter测试。
音乐的播放与暂停
1、首先,将音乐导入库。然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。
2、在主场景中拖入两个按钮,将两个按钮分别命名为bofang_btn和tingzhi_btn。
3、在时间轴面板的AS层写下如下代码:
var mymusic=new Sound();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。