觉醒时刻
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
juexingshike/assets/FrameWork/Base/FMViewBase.ts

124 lines
2.8 KiB

/*
* @Descripttion: 基础view base
* @version: 1.0.0
* @Author: YeeChan
* @Date: 2020-07-21 11:49:25
*/
import { FMListener, callFM_custom } from "../Interface/FMInterface";
export default abstract class FMViewBase extends cc.Component {
//是否初始化
protected _isInit_custom: number = 0;
protected _listenerCallView_custom: FMListener;
//各个节点自定义事件
public abstract EventEnumView_custom : {};
//------------------------------------------
protected onLoad() {
this._initView_custom();
}
//初始view的数据 一般如果需要在onLoad前调用该对象中的方法,则手动调用 此方法来实现数据初始化
public _initView_custom(): boolean {
if (this._isInit_custom != 0) {
return;
}
this._isInit_custom = 1;
this.initView_custom();
this.addEvent_custom();
this._isInit_custom = 2;
return true;
}
//初始view 的相关数据 子类中不需要实现 onLoad
protected abstract initView_custom(): void;
//添加事件 会在initView方法后执行
protected abstract addEvent_custom(): void;
//移除事件 会在 removeView 或 销毁的时候执行
protected abstract removeEvent_custom(): void;
//设置监听
public onListenerEventView_custom(listener: FMListener) {
this._listenerCallView_custom = listener;
}
//发送事件
protected emitListenerEvent_custom(event: string) {
console.log("发送 " + event)
if (this._listenerCallView_custom) {
callFM_custom(this._listenerCallView_custom, event, this);
}
}
/**
* 移除节点
*/
public removeView_custom(): void {
this.onDestroy();
this.node.destroy();
}
/**
* 隐藏view
*/
public hideView_custom(): void {
this.node.active = false;
}
/**
* 显示view
*/
public showView_custom(): void {
this.node.active = true;
}
/**
* 判断view 是否激活
*/
public isActiveView_custom(): boolean {
if (cc.isValid(this, true) && this.node.activeInHierarchy) { //没有被销毁 && 在场景中是激活的
return true;
}
return false;
}
/**
* 显示banner
*/
public showBanner_custom() {
}
/**
* 隐藏banner
*/
public hideBanner_custom() {
}
//当该组件被启用,并且它的节点也激活时
protected onEnable(): void {
}
//当该组件被禁用或节点变为无效时调用
protected onDisable(): void {
this.hideBanner_custom();
}
//当该组件被销毁时调用
protected onDestroy(): void {
this.removeEvent_custom();
this.hideBanner_custom();
}
}