如何动态的控制声音的音量大小?

作者:闪吧   类型:原创   来源:闪吧

  

如何动态的控制声音的音量大小?
解决思路(必须要有)
实现旋转按钮控制声音大小,首先我们要调用库中的音乐,并让其循环足够大的次数。然后要实现按钮拖动效果,并在此基础上实现声音的最大与最小之间的相互过渡。
具体步骤
我们分两个部分来完成。第一部分是事例所需要的元件的绘制。第二部分是AS控制部分。
1,  打开FLASH MX,设置背景为绿色,其他文档属性默认。
2,  【插入】|【新建元件】,建立一个名称为“旋转按钮图形”的图形元件。并在其编辑区内利用简便填充的圆绘制一个旋转按钮。如图1所示。


图1  绘制旋转按钮
3,  先建一个影片剪辑,命名为“旋转按钮”。把“旋转按钮图形”从库中拖放到影片剪辑编辑区。分别在第50帧,第100帧插入关键帧。并设置这两帧中影片剪辑的旋转角度。创建移动渐变动画。并在第1帧添加AS:stop();。如图2,图3所示。


图2 第50帧的旋转角度


图3  第100帧的旋转角度
4,  先建一个按钮元件,命名为“按钮”。进入编辑区以后,在按钮时间线的第4帧“点击”帧里面绘制一个40*65像素的矩形。因为是在“点击”帧里面绘制的,所以颜色随意。如图4所示。


图4   绘制按钮元件
5,  先建一个名称为“滑快”的影片剪辑,把“按钮”元件拖放到编辑区。
6,  我们找一个mp3音乐,导入到库中。命名为“sound”。现在我们的准备工作都已经完成了。下面我们就要做最重要的as语句部分了。
7,  回到主场景,把“旋转按钮”影片剪辑拖放到第1层的第1帧,在下面的属性面板中设定给影片剪辑得分身名为“xuanzhuan_mc”。改变图层1的名称为“旋转”。如图5所示。


图5   设定分身名
8,  新建一层,命名为“按钮”。利用绘图工具绘制一个按钮的刻度,并添加刻度值。在上方创建一个动态文本,变量名为“aa”。如图6所示。


图6   “按钮”层的绘制
9,  新建一个图层,命名为“滑快”。把影片剪辑“滑快”拖放到场景中的相应位置,并在属性面板中设置他的分身名为“huadong_mc”。如图7所示。


图7   “滑快”层的设置
10,              新建最后一个图层,命名为as。在这个层中我们来添加as:
stop();//让动画在这帧停止 
ss = new Sound();               //创建一个新的声音 
ss.attachSound("sound");         //绑定库里的声音。 
ss.start(0,200);                   //声音开始播放,循环200次。
11,双击库中的“滑快”影片剪辑,选中它里面的按钮,给按钮添加as:
on (press) { 
startDrag("", false, left, top, right, bottom); 
//当按下鼠标时,开始拖动,限制可拖动的区域 
    dragging = true;//设置变量为真 

on (release, releaseOutside) { 
    stopDrag();//当释放或在按钮外释放时,停止拖动。 
    dragging = false; 设置变量为假 
}
12,回到主场景,选中“滑快”图层中的影片剪辑,添加as:
// 这是设置huadong_mc(含按钮)的坐标位置。限制huadong_mc只能在水平方向移动。只能移100。
onClipEvent (load) {
         top = _y;
         left = _x;
         right = _x+100;
         bottom = _y;
}
// 当为真时,得到huadong_mc的坐标,去掉小数(重要),
onClipEvent (enterFrame) {
         if (dragging == true) {
                   n = getProperty("_root.huadong_mc",_x);
                   n = Math.round(n);
                   // 取A的值,0~100,因为最大为341,最小为241
              a = n-241;
                   // 设AA的值。
                   _root.aa = a;
                   // 指向MC,停止在AA的值。
                   _root.xuanzhuan_mc.gotoAndStop(_root.aa);
                   // 这句是设声音的大小,当X=LEST时,最大;当X=RIGHT时,最小。
                   _root.ss.setVolume(100-(_x-left));
         }
}
13,测试,我们发现并没有声音播放。这是为什么呢?是因为我们在as层中设定了调用库中的音乐并没有成功。我们选中库中的“sound”声音元件,利用鼠标右键打开连接面板。如图8所示设置。


图8      声音文件的连接属性
完成。请参考源文件旋转按钮控制声音.fla
注  意 ——按钮的刻度位置一定要与按钮旋转的角度相互对应。
提  示 ——隐形按钮的制作很有讲究,文章开头我提到的灵光一闪就是这个了,开始时我做了个圆形的按钮,比较大。后来又改成了图中的A的矩形,比较好控制。因为当旋转MC播放时,你始终处于隐形按钮的感应范围,所以有种控制旋钮的错觉,其实你水平拖动也能控制声音的啦!
技  巧 ——为什么MC的名称要起名为huadong_mc呢?因为如果你加上了特殊的后缀_mc,在写代码时,写到_mc后面再写点时,就会出现代码提示,很方便。(没有后缀不会出现。)

 分  析—— 分析为什么要这样做,指出操作的关键,介绍其他操作的结果。使读者知其然,也知其所以然,从而举一反三。

特别提示
动态文本框aa只是为测试,你可以把它删掉。

特别说明


本例中除了as的一些用法的知识以外,我们第一次接触了声音的连接属性设置。在论坛上有不少的朋友遇到这样的问题。问题的关键就是没有设置声音的连接属性。声音的连接属性与影片剪辑得分身名是一样的。如果不设置他的连接属性,as就无法判断去控制哪一个元件了。

   责任编辑:kissall    时间:2005年8月29日