ViewBase.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. cc.Class({
  2. extends: cc.Component,
  3. properties: {
  4. },
  5. init(param) {
  6. super.init()
  7. },
  8. createComponent(type, parent, param, cb) {
  9. let prefabPath = G.UIMgr.defaultUIPath + JMC.UIPath[type];
  10. this.creawteUI(prefabPath, parent, param)
  11. },
  12. creawteUI(prefabPath, parent, param, cb, cache = false) {
  13. G.LogUtils.warn('showAlert', prefabPath);
  14. let self = this;
  15. cc.loader.loadRes(prefabPath, cc.Prefab, (completedCount, totalCount, item) => {
  16. }, (err, prefab) => {
  17. if (err) {
  18. G.AppUtils.getSceneCtrl().addToast('网络异常!');
  19. G.LogUtils.error('[showAlert]', err);
  20. if (cb) {
  21. cb(undefined, 'error', err);
  22. }
  23. return;
  24. }
  25. let node = cc.instantiate(prefab);
  26. if (cb) {
  27. cb(alert, 'willShow', undefined);
  28. }
  29. let ret = self.safeAddChild(parent, node);
  30. if (!ret) {
  31. return;
  32. }
  33. let viewBase = node.getComponent(ViewBase);
  34. if (viewBase) {
  35. viewBase.init(param)
  36. }
  37. if (!cache) {
  38. cc.loader.releaseRes(prefabPath);
  39. }
  40. });
  41. },
  42. safeAddChild(parent, node) {
  43. if (!cc.isValid(node) || !cc.isValid(parent)) {
  44. return false;
  45. }
  46. parent.addChild(node);
  47. cc.game.emit('e_ui_push_alert', {node});
  48. return true;
  49. },
  50. });