"use strict"; cc._RF.push(module, '2a27e2wV49Np5g2ysRDnevO', 'nx.plugin.manager'); // Scripts/nx/plugin/nx.plugin.manager.js "use strict"; /******************************************************************************* * * Nx插件管理器 * * * * 2021.12.10 ******************************************************************************/ var NxObject = require("nx.object"); var PE = require("nx.plugin.event"); var PV = require("nx.plugin.view"); var PVB = require("nx.plugin.view.binder"); var NxPluginManager = cc.Class({ "extends": NxObject, name: "NxPluginManager", // 初始化 initialize: function initialize(_args) { // USPER if (!this._super(_args)) { return false; } // 注册插件库 this.plugins = { "event": PE, // 事件相关 "view": PV, // 视图相关 "vbinder": PVB // 视图监听 }; // 全局服务开启 nx.plugin = this; return true; }, // 销毁 uninitialize: function uninitialize() { // 全局服务关闭 nx.plugin = null; // USPER return this._super(); }, // 添加插件 add: function add(_inst, _keys) { // 对象非法 if (nx.dt.objEmpty(_inst)) { nx.error("[插件]添加失败,对象非法!"); return false; } // 空插件 if (nx.dt.arrEmpty(_keys)) { nx.error("[插件]添加失败,插件无效!"); return false; } // 安装 _inst._plugins = _keys; for (var i = 0; i < _keys.length; ++i) { var key = _keys[i]; var handle = this.plugins[key]; if (nx.dt.objEmpty(handle)) { nx.error("[插件]添加失败,插件无效:", key); continue; } handle.install(_inst); } return true; }, // 删除插件 remove: function remove(_inst) { // 对象非法 if (nx.dt.objEmpty(_inst)) { nx.error("[插件]删除失败,对象非法!"); return false; } // 空插件 if (nx.dt.arrEmpty(_inst._plugins)) { return true; } // 删除 for (var i = 0; i < _inst._plugins.length; ++i) { var key = _inst._plugins[i]; var handle = this.plugins[key]; if (nx.dt.objEmpty(handle)) { nx.error("[插件]删除失败,插件无效:", key); continue; } handle.uninstall(_inst); } delete _inst._plugins; return true; } }); // 模块导出 module.exports = NxPluginManager; cc._RF.pop();