声音的设计与处理

class MusicManager {
	public constructor() {
	}

	static musicManager: MusicManager
	static get instance() {
		if (!this.musicManager) {
			this.musicManager = new MusicManager()
		}
		return this.musicManager
	}

	private soundbtn: egret.Sound
	private soundChannelbtn: egret.SoundChannel
	private catsay: egret.SoundChannel
	private soundDress: egret.Sound
	private targetBtn: any
	public btnPlay: boolean = false
	public dressPlay: boolean = false
	private catArr = []
	public CatisPlay: boolean = false
	public isReady: boolean = false
	public catplay: boolean = false
	private soundbg: egret.Sound
	private soundChannelBg: egret.SoundChannel
	private soundPosition: number
	/**控制音效 */
	public ctrlYinXiao: Boolean = false
	/**控制音乐 */
	public ctrlmusic: Boolean = false
	/**控制大胃猫吃东西的音效 */
	public Feedctrl: Boolean = false

	/**能吃的是食物音效*/
	private soundCanEat: egret.Sound
	private soundNocanEat: egret.Sound
	private FeedbgData: egret.Sound
	private Yaodata: egret.Sound

	private FeedName: string = 'Home'

	/**本地加载音乐 */
	public loadingMusic(name: any, target: any) {
		this.targetBtn = target
		var loader: egret.URLLoader = new egret.URLLoader()
		loader.addEventListener(egret.Event.COMPLETE, function loadOver(event: egret.Event) {
			if (name === 'btn') {
				this.soundbtn = loader.data
			} else if (name === 'dress') {
				this.soundDress = loader.data
			} else if (name === 'noeat') {
				this.soundNocanEat = loader.data
			} else if (name === 'Caneat') {
				this.soundCanEat = loader.data
			} else if (name === 'bgm') {
				this.FeedbgData = loader.data
			} else if (name === 'yao') {
				this.Yaodata = loader.data
			}
			else {
				this.catArr.push(loader.data)
			}
			target.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouch, this)
		}, this)
		loader.addEventListener(egret.IOErrorEvent.IO_ERROR, function loadError(event: egret.IOErrorEvent) {
			console.log("loaded error!");
		}, this)
		loader.dataFormat = egret.URLLoaderDataFormat.SOUND;
		let urld = 'resource/assets/music/' + name + '.mp3'
		loader.load(new egret.URLRequest(urld))
	}
	/**加载背景音乐 */
	public Bgmusic(name: any, target: any) {
		this.targetBtn = target
		var loader: egret.URLLoader = new egret.URLLoader();
		loader.addEventListener(egret.Event.COMPLETE, function loadOver(event: egret.Event) {
			this.soundbg = loader.data
			if (SceneManager.instance.systemInfo === 'iOS' || SceneManager.instance.systemInfo === 'Mac OS') {
				target.addEventListener(egret.TouchEvent.TOUCH_TAP, this.BgOntouch, this)
			} else {
				if (this.ctrlmusic) {
					this.soundChannelBg = this.soundbg.play(2)
				} else {
					this.soundChannelBg = this.soundbg.play(2)
					this.soundChannelBg.stop()
				}
			}
		}, this);
		loader.addEventListener(egret.IOErrorEvent.IO_ERROR, function loadError(event: egret.IOErrorEvent) {
			console.log("loaded error!");
		}, this);
		loader.dataFormat = egret.URLLoaderDataFormat.SOUND;
		let urld = name
		loader.load(new egret.URLRequest(urld))
	}



	/**背景音乐的问题 */
	public BgOntouch() {
		if (this.ctrlmusic) {
			this.soundChannelBg = this.soundbg.play(2)
			this.targetBtn.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.BgOntouch, this)
		} else {
			this.soundChannelBg = this.soundbg.play(2)
			this.soundChannelBg.stop()
			this.targetBtn.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.BgOntouch, this)
		}
	}
	/**背景停止 */
	public BgStop() {
		if (this.soundChannelBg) {
			this.soundPosition = this.soundChannelBg.position
			this.soundChannelBg.stop()
		}
		// if (SceneManager.instance.systemInfo === 'iOS' && this.ctrlYinXiao === true) {
		// 	this.targetBtn.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouch, this)
		// }
	}
	/**背景继续 */
	public Bgpause() {
		if (this.soundChannelBg && this.ctrlmusic) {
			if (this.FeedName === 'Home') {
				this.soundChannelBg = this.soundbg.play(this.soundPosition)
			} else if (this.FeedName === 'feedCat') {
				this.soundChannelBg = this.FeedbgData.play(this.soundPosition)
			}
		}
		if (SceneManager.instance.systemInfo === 'iOS' && this.ctrlYinXiao === true) {
			// MusicManager.instance.loadingMusic('btn', this)
			// MusicManager.instance.loadingMusic('dress', this)
			// for (var i = 1; i < 6; i++) {
			// 	MusicManager.instance.loadingMusic('cat' + i, this)
			// }
			// this.targetBtn.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouch, this)
			// this.targetBtn.addEventListener(egret.TouchEvent.TOUCH_TAP, this.BgOntouch, this)
		}

	}
	/**背景声音的替换*/
	public BgChange(name: any) {
		if (this.ctrlmusic) {
			if (name === 'feedCat') {
				this.BgStop()
				this.FeedName = 'feedCat'
				this.soundChannelBg = this.FeedbgData.play(0, -1)
			} else if (name === 'bg') {
				this.BgStop()
				this.FeedName = 'Home'
				this.soundChannelBg = this.soundbg.play(2, -1)
			}
		}

	}


	/**触摸事件 */
	public onTouch(event: egret.Event) {
		// console.log(this.ctrlYinXiao,this.btnPlay,this.catplay,"我要放音效了")
		if (this.ctrlYinXiao) {
			if (this.btnPlay) {
				this.soundChannelbtn = this.soundbtn.play(0, 1)
				this.btnPlay = false
			}
			if (this.dressPlay) {
				this.soundChannelbtn = this.soundDress.play(0, 1)
				this.dressPlay = false
			}
			if (this.catplay) {
				const CatSaynum = RandomUtils.getSingtonInstance().limitInteger(0, 4)
				this.catsay = this.catArr[CatSaynum].play(0, 1)
				this.catplay = false
				this.catsay.addEventListener(egret.Event.SOUND_COMPLETE, this.onSoundComplete, this)
			}
		}
	}

	/**声音完毕 */
	private onSoundComplete(event: egret.Event): void {
		if (this.isReady) {
			this.isReady = false
			// this.catsay = null
			// this.catsay.stop()
		}
	}
	/**吃到能吃的食物 */
	public FeedEat(type: any) {
		if (this.ctrlYinXiao) {
			if (type === 'caneat') {
				if (this.soundCanEat) {
					this.soundChannelbtn = this.soundCanEat.play(0, 1)
				}
			} else if (type === 'Nocaneat') {
				if (this.soundNocanEat) {
					this.soundChannelbtn = this.soundNocanEat.play(0, 1)
				}
			} else if (type === 'yao') {
				if (this.Yaodata) {
					this.soundChannelbtn = this.Yaodata.play(0, 1)
				}
			}
		}
	}
}

//声音的设计,提前加载所有的音效文件,创建两个声道,一个用来拨放背景音乐,一般就是点击哪个按钮播放不同的声音。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值