【flash】滚动条控制声音 的类 和 swf文件

效果
在这里插入图片描述

我吧他打包成一个类了,把滚动 元件复制过去 和 new一个类就可以用。
文件下载链接
//download.csdn.net/download/qq_45236230/12565430



var bgm_sound:Sound = new Title()   // 创建音效
var channel:SoundChannel = bgm_sound.play(0,int.MAX_VALUE)  //循环播放
var sound_module = new Sound_module(this,channel,soundBtn,sound_flag,sliding,sound_bar)
// this 传入舞台 用来在内部进行事件绑定   channel 声音通道 用来改变声音大小的
//[soundBtn sound_flag  sliding sound_bar] 这一部分是 舞台上的元件。用于计算出音量大小的

stop()

声音模块类

package  {
	import flash.events.MouseEvent
	import flash.media.SoundTransform
	public class Sound_module {
		//  需要被调整的bgm sound_button  声音按钮   斜杆  滑块  声音条
		var sound_button,sound_flag,sliding,sound_bar,stage_,bgm
		
		var slidingflag:Boolean=false        // 滑块是否处于滑动状态
		var audible:Boolean = true           // 是否开启静音
		public function Sound_module(stage_,bgm_sound,sound_button,sound_flag,sliding,sound_bar) {
			this.bgm = bgm_sound
			this.sound_button = sound_button  
			this.sound_flag = sound_flag
			this.sliding = sliding 
			this.sound_bar = sound_bar 
			this.stage_ = stage_.stage 

			//声音滑块的事件绑定
			this.sliding.addEventListener(MouseEvent.MOUSE_DOWN,slidingDown);
			this.sliding.addEventListener(MouseEvent.MOUSE_MOVE,slidingMove);
			this.stage_.addEventListener(MouseEvent.MOUSE_MOVE,slidingMove);
			this.sliding.addEventListener(MouseEvent.MOUSE_UP,slidingUp);
			this.stage_.addEventListener(MouseEvent.MOUSE_UP,slidingUp);
			
			
			//按钮
			this.sound_button.addEventListener(MouseEvent.CLICK,sound_buttonCLICK)
			
			//   斜杠是否隐藏
			this.sound_flag.visible= !this.audible    //audible指的是 能否听见  和 /的显示逻辑刚好相反
		}
		
		function slidingDown(e){
			this.slidingflag = true
		}
		
		function slidingUp(e){
			this.slidingflag = false
			getSoundValue()
		}
		
		function slidingMove(e){
			if (this.slidingflag){
				this.sliding.x =  e.stageX
				if (this.sliding.x < this.sound_bar.x)
					this.sliding.x = this.sound_bar.x+1
				if (this.sliding.x > this.sound_bar.x+this.sound_bar.width )
					this.sliding.x = this.sound_bar.x+this.sound_bar.width -1
			}
			getSoundValue() //把数据写入声音大小
		}
		
		
		function sound_buttonCLICK(e){
			this.audible = !this.audible //如果为真 就是假  取反
			this.sound_flag.visible = !this.audible
			getSoundValue()
			
		}
		
		function getSoundValue(){
			var value,sliding_position
			
			if (this.audible){
			 sliding_position = this.sliding.x - this.sound_bar.x
			 value = sliding_position/this.sound_bar.width
			}
			else {
				 value = 0
			}
			 
			 // 需要用一个 新的 SoundTransform 去替换 声音通道里的 SoundTransform才奏效
			 var changeForm:SoundTransform = new SoundTransform();
			 changeForm.volume =value
			 bgm.soundTransform  = changeForm 
 
		}
	}
}

滑块改变声音大小

滑块改变声音大小 具体计算公式==
有2个关键的东西 滑块 滚动条。 我们通过滑块的 对于 滚动条的相对位置 来计算出来 滑块处于 滚动条的 百分之几。
然后 再把这个 百分比 作用到 声音大小上。
在这里插入图片描述
实际上 我们要达到的效果是
1.移动滑块,就会改变音量。
2.点击滑块 我们要让他跟着鼠标移动
3.滑块不会超过 bar的边界

这里我们绑定了好几个事件函数来处理以上的问题

						//声音滑块的事件绑定
			this.sliding.addEventListener(MouseEvent.MOUSE_DOWN,slidingDown);   // 鼠标按在滑块身上
			this.sliding.addEventListener(MouseEvent.MOUSE_MOVE,slidingMove);   // 鼠标按在滑块上移动
			this.stage_.addEventListener(MouseEvent.MOUSE_MOVE,slidingMove);    // 鼠标按在滑块外移动 上松开
			this.sliding.addEventListener(MouseEvent.MOUSE_UP,slidingUp);       // 鼠标按在滑块上松开 
			this.stage_.addEventListener(MouseEvent.MOUSE_UP,slidingUp);        // 鼠标按在滑块外 

1.鼠标按在滑块身上,让滑块更着动。这里使用了一个 slidingflag 布尔值。
当按下的时候 让他为true

2.鼠标移动。这里分为2种情况 。 在滑块上移动 和滑块外移动。 他们对应的行为都是一样的。
a.动态计算滑块相对位置 然后 获得 一个值,用那个值去改变音量
b.不让滑块越界

3.鼠标松开。这里分为2种情况 。 在滑块上松开和滑块外松开。 他们对应的行为都是一样的。
a.计算滑块相对位置 然后 获得 一个值,用那个值去改变音量

改变声音的音量关键代码
这里需要new 一个 SoundTransform
去替换原来的 声音通道的 SoundTransform

			 // 需要用一个 新的 SoundTransform 去替换 声音通道里的 SoundTransform才奏效
			 var changeForm:SoundTransform = new SoundTransform();
			 changeForm.volume =value
			 bgm.soundTransform  = changeForm 

关于静音
在这里插入图片描述
给这个小喇叭添加一个事件来处理this.sound_button.addEventListener(MouseEvent.CLICK,sound_buttonCLICK)

这个事件处理 主要做了这几件事
1.点击一下 就让audible 变为 false 或这 true
2. 是否显示小斜杆
3. 顺便吧声音设置为0

		function sound_buttonCLICK(e){
			this.audible = !this.audible //如果为真 就是假  取反
			this.sound_flag.visible = !this.audible
			getSoundValue()
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值