module els { /** * 组件接口 */ export interface IComponentData { name: string; propertys: any; } export class Component extends BaseObject { private _enabled: boolean = true; gameobject: GameObject; constructor() { super(); } get enabled() { return this._enabled; } set enabled(value: boolean) { if (this._enabled !== value) { this._enabled = value; if (value) this.onEnable(); else this.onDisable(); } } get className() { return egret.getQualifiedClassName(this['constructor']); } //---------------------------------生命周期----------------------------------// /** * 当属性改变时 * @param oldProp 旧的属性 * @param currentProp 新的属性 * */ onPropertyChanged(oldProp: { name: string, value: any }, currentProp: { name: string, value: any }): void { console.log("组件名:" + this.name + " 旧的属性:" + oldProp.name + " 值:" + oldProp.value + ", 新的属性:" + currentProp.name + " 值:" + currentProp.value); } /**在渲染对象之前被调用 */ onWillRenderObject(): void { } /**每帧渲染执行 */ onRender(): void { } /** * 只会被调用一次,在onStart方法之前被调用,主要用于字段的初始化工作,禁用脚本,创建游戏对象 * 注意:是所有游戏对象初始化完毕之后才调用,而非本身初始化完毕后调用。 */ onAwake(): void { } /** * 仅在render函数第一次调用前调用,它在整个脚本生命周期时只被调用一次。(它在onAwake之前执行???) * 主要用于程序UI的初始化操作,比如获取游戏对象或组件 * 设置了enabled = false之后,start不会被调用 */ onStart(): void { } /**每帧执行,设置了enabled = false之后,tick不会被调用 */ tick(): void { } /**如果enabled=true,那么每帧将被执行 */ update(): void{ } fixedUpdate(): void { } lateUpdate(): void { } /** * 当组件被载入时被调用 */ onEnable(): void { } /** * 当组件被销毁或者组件被卸载时调用 */ onDisable(): void { } /** * 当组件被销毁时调用 */ onDestroy(): void { } /** * 当组件所在游戏对象变成显示时,这里函数调用表示在视野中可见,并不一定只指visible属性为true */ onBecomeVisible() { } /** * 当组件所在游戏对象变成隐藏时,这里函数调用表示在视野中不可见,并不一定只指visible属性为false */ onBecomeInVisible() { } //-----------------------------------物理相关的----------------------------------// /** 当组件所在游戏对象与其它游戏对象碰撞时 */ onCollision(): void { } //-----------------------------------编辑器模式下生命周期----------------------------------// /** 在渲染与处理GUI事件时调用,通常我们可以通过此函数来画一个按纽等,每一帧执行 */ onGUI() { } /** 用户点击重置按纽或者首次添加该对象时被调用,只函数只在编辑模式下被调用 */ onReset(): void { } /** 编辑器模式下被调用 */ onDrawGizmos() { } destroy() { } //---------------------------------TouchEvents----------------------------------// onTouchBegin(event:egret.TouchEvent) { } onTouchEnd(event: egret.TouchEvent) { } onTouchMove(event:egret.TouchEvent) { } onTouchTap(event: egret.TouchEvent) { } onTouchReleaseOutside(event: egret.TouchEvent) { } onTouchRollOver(event: egret.TouchEvent) { } onTouchRollOut(event: egret.TouchEvent) { } clone(): Component { let component: Component = new Component(); component.enabled = this.enabled; return component; } } }