import { GameUIObject } from './GameUIObject'; export class GameUIComponent{ name: string; propertys: any; uiGameobject: GameUIObject; private static _exsistScripts: any = {}; /** * 检测是否存在脚本,如果存在,那么,提示重复 */ static existScript(name: string): boolean{ return this._exsistScripts[name] === true; } /**获取一个新的脚本名称 */ static getNewScriptName(): string{ var baseScriptName: string = "NewComponentScript"; if (!this._exsistScripts) return baseScriptName + "1"; var exsitNewScriptName: boolean = false; var indexs: number[] = []; for (var scriptName in this._exsistScripts) { var index: number = scriptName.indexOf('NewComponentScript'); if ( index !== -1) { exsitNewScriptName = true; var scriptIndex: number = parseFloat(scriptName.slice(baseScriptName.length)); indexs.push(isNaN(scriptIndex) ? 1 : scriptIndex); } } if (!exsitNewScriptName) { return baseScriptName + "1"; } if (indexs) { indexs.sort((a: number, b: number) => { if (a > b) return 1; else if (a < b) return -1; return 0; }); //最大的索引 var maxIndex: number = indexs[indexs.length - 1]; var curIndex: number = 0; for (var i: number = 1; i < maxIndex; i++){ if (indexs[i - 1] != i) { curIndex = i; break; } } return baseScriptName + (curIndex === 0 ? maxIndex + 1 : curIndex); } return baseScriptName + "1"; } clone(): GameUIComponent{ let uiComponent: GameUIComponent = new GameUIComponent(); uiComponent.name = this.name; if (this.propertys) { uiComponent.propertys = {}; Object.assign(uiComponent.propertys, this.propertys); } return uiComponent; } /** * 添加脚本 */ static addScript(name: string): boolean{ if (!name) return false; if (this._exsistScripts[name] === undefined) { this._exsistScripts[name] = true; return true; } return false; } /** * 移除存在的脚本 */ static removeScript(name: string): boolean{ if (this._exsistScripts[name]) { delete this._exsistScripts[name]; return true; } return false; } }