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