添加广播逻辑
This commit is contained in:
50
src/models/EventManager.ts
Normal file
50
src/models/EventManager.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
|
||||
|
||||
export const EVENT_TYPES = {
|
||||
NOT_UPDATE_MISTAKE: "NOT_UPDATE_MISTAKE",//更新分数
|
||||
}
|
||||
|
||||
|
||||
export class EventManager {
|
||||
|
||||
private static instance: EventManager
|
||||
public static getInstance(): EventManager {
|
||||
if (!EventManager.instance) {
|
||||
EventManager.instance = new EventManager()
|
||||
}
|
||||
return EventManager.instance
|
||||
}
|
||||
|
||||
private listeners: Map<string, Array<any>> = new Map()
|
||||
|
||||
public RegisterEvent(eventID: string, func: any): void {
|
||||
if (this.listeners.has(eventID) == false) {
|
||||
this.listeners.set(eventID, new Array())
|
||||
}
|
||||
var list: Array<any> = this.listeners.get(eventID)
|
||||
var find = list.indexOf(func)
|
||||
if (find < 0) {
|
||||
list.push(func)
|
||||
}
|
||||
}
|
||||
|
||||
public UnregisterEvent(eventID: string, func: any): void {
|
||||
if (this.listeners.has(eventID)) {
|
||||
var list: Array<any> = this.listeners.get(eventID)
|
||||
var find = list.indexOf(func)
|
||||
if (find >= 0) {
|
||||
list.splice(find, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DispatchEvent(eventID: string, arg: any): void {
|
||||
if (this.listeners.has(eventID)) {
|
||||
var list: Array<any> = this.listeners.get(eventID)
|
||||
for (var i=0; i<list.length; i++) {
|
||||
list[i](arg)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3
src/models/EventManager.ts.meta
Normal file
3
src/models/EventManager.ts.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"uuid": "1784429c-7fbe-47bc-8281-9a34510da81b"
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { config } from "../constants/config";
|
||||
import { UIManager } from "../models/UIManager";
|
||||
import { StorageManager } from "../models/StorageManager";
|
||||
import { LevelManager } from "../models/LevelManager";
|
||||
import { EventManager, EVENT_TYPES } from "../models/EventManager";
|
||||
import { Difficulty } from "./Difficulty";
|
||||
|
||||
const { regClass, property } = Laya;
|
||||
@@ -12,14 +13,25 @@ export class GameOver extends Laya.Script {
|
||||
declare owner : Laya.Box;
|
||||
|
||||
|
||||
@property(Laya.Button)
|
||||
public btn_restart: Laya.Button
|
||||
@property(Laya.Sprite)
|
||||
public btn_second: Laya.Sprite
|
||||
|
||||
@property(Laya.Button)
|
||||
public btn_new: Laya.Button
|
||||
@property(Laya.Sprite)
|
||||
public btn_restart: Laya.Sprite
|
||||
|
||||
@property(Laya.Sprite)
|
||||
public btn_new: Laya.Sprite
|
||||
|
||||
//组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
|
||||
onAwake(): void {
|
||||
|
||||
this.btn_second.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
|
||||
var doStage = StorageManager.getInstance().loadStage(config.DEFAULT_STAGE_ID)
|
||||
doStage.set_mistake(doStage.get_mistake()-1)
|
||||
EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE, "adsf")
|
||||
this.owner.destroy()
|
||||
})
|
||||
|
||||
this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
|
||||
var doStage = StorageManager.getInstance().loadStage(config.DEFAULT_STAGE_ID)
|
||||
var difficulty = doStage.get_difficulty()
|
||||
|
||||
@@ -6,6 +6,7 @@ import { DOStage } from "../models/DOStage";
|
||||
import { config } from "../constants/config";
|
||||
import { StorageManager } from "../models/StorageManager";
|
||||
import { Utility_ConvertSecondToString } from "../utils/utility";
|
||||
import { EVENT_TYPES, EventManager } from "../models/EventManager";
|
||||
|
||||
|
||||
const { regClass, property } = Laya;
|
||||
@@ -54,9 +55,9 @@ export class Stage extends Laya.Script {
|
||||
private data: DOStage;
|
||||
private selectedBlock: Block;
|
||||
|
||||
|
||||
//组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
|
||||
private static _instance: Stage
|
||||
onAwake(): void {
|
||||
Stage._instance = this
|
||||
this.btn_back.on(Laya.Event.CLICK, this, ()=>{
|
||||
UIManager.getInstance().loadHomeUI();
|
||||
UIManager.getInstance().closeStageUI();
|
||||
@@ -97,6 +98,18 @@ export class Stage extends Laya.Script {
|
||||
this.btn_hint_normal = this.btn_hint.getChildByName("Image").getChildByName("normal") as Laya.Box
|
||||
this.btn_hint_ad = this.btn_hint.getChildByName("Image").getChildByName("ad") as Laya.Box
|
||||
this.btn_hint_label = this.btn_hint.getChildByName("Image").getChildByName("normal").getChildByName("label") as Laya.Label
|
||||
|
||||
EventManager.getInstance().RegisterEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE, Stage.EventUpdateMistak)
|
||||
}
|
||||
|
||||
onDestroy(): void {
|
||||
EventManager.getInstance().UnregisterEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE, Stage.EventUpdateMistak)
|
||||
}
|
||||
|
||||
public static EventUpdateMistak(arg: any): void {
|
||||
if (Stage._instance) {
|
||||
Stage._instance.onUpdateMistake()
|
||||
}
|
||||
}
|
||||
|
||||
public onLoadStage(doStage: DOStage): void {
|
||||
|
||||
Reference in New Issue
Block a user