早知 发表于 2009-2-19 08:27:14

Flash中音量和左右声道平衡的控制(2)

 二、音量的控制

  (6)从库中选一个按钮放在舞台上,把这个按钮转换成MovieClip。这样做的目的是能把这个按钮既可以接受电影事件也能接受按钮事件,如下图:   
www.ad119.cn/bbs/attachments/websoft/20090219/20092198265664077801.gif


  (7)在这个按钮的电影剪辑上加入以下代码
  onClipEvent (load) {
    top = _y;
    left = _x;
    right = _x;
    bottom = _y 100;
  }
  onClipEvent (enterFrame) {
    if (dragging=true) {
      _root.s.setVolume(100-(_y-top));
    }
  }  (8)通过双击这个电影剪辑,或通过选中这个电影后再选Edit>Edit Symbol,进入该电影剪辑的编辑状态,选中按钮本身,在这个按钮上捆绑以下代码

  on (press) {
    startDrag ("", false, left, top, right, bottom);
    dragging = true;
  }
  on (release) {
    stopDrag ();
    dragging = false;
  }  代码解释:首先是在电影上的Load事件下,这里做的是初始化的工作,这里的left和right是同一个值,它的作用是使按钮只能在上下被拖动,不能左右移动。而bottom是比top多了100,这样按钮只能被向下拖动100个像素的位置。

  然后在enterFrame事件中,是一个判断语句,dragging=true就是按钮正在被拖动,它是被设置在下面的按钮里的,当按钮在拖动时,draggin=true;当stopDrag()时,dragging=false。如果判断是true时执行root.s.setVolume(100-(_y-top));这个语句的作用是当按钮在被拖动时,根据此时按钮的_y位置,来设置音量。

  这里用到了sound.setVolume(volume)这个新的语句,sound是你是你建件的new sound()的名称,我们这里是s,volume是一个从0-100的数字,0为声音最小,100为最大。

  现在你知道为什么一开始就用bottom=_y 100吧?看看100-(_y-top)在原始状态下是100,但只要随着按钮的拖动,_y越来越大,而top是一个固定的初始值。两者的差越来越大,这样整个值就越来越小,最后至0,取值范围在0-100间。  下面接着来做调节声音的平衡。
页: [1]
查看完整版本: Flash中音量和左右声道平衡的控制(2)