cocos2d-cli 1.6.3 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/bin/cocos2d-cli.js +152 -152
  2. package/data/script_map.json +25 -25
  3. package/package.json +33 -33
  4. package/src/commands/add-component.js +112 -112
  5. package/src/commands/add.js +177 -177
  6. package/src/commands/build.js +78 -78
  7. package/src/commands/create-scene.js +181 -181
  8. package/src/commands/get.js +108 -108
  9. package/src/commands/prefab-create.js +110 -110
  10. package/src/commands/remove-component.js +110 -110
  11. package/src/commands/remove.js +99 -99
  12. package/src/commands/screenshot.js +108 -103
  13. package/src/commands/set-component.js +119 -119
  14. package/src/commands/set.js +107 -107
  15. package/src/commands/tree.js +28 -28
  16. package/src/lib/cc/CCButton.js +122 -122
  17. package/src/lib/cc/CCCamera.js +93 -93
  18. package/src/lib/cc/CCCanvas.js +54 -54
  19. package/src/lib/cc/CCColor.js +32 -32
  20. package/src/lib/cc/CCComponent.js +60 -60
  21. package/src/lib/cc/CCLabel.js +146 -146
  22. package/src/lib/cc/CCNode.js +255 -255
  23. package/src/lib/cc/CCObject.js +23 -23
  24. package/src/lib/cc/CCPrefab.js +242 -242
  25. package/src/lib/cc/CCRect.js +32 -32
  26. package/src/lib/cc/CCRichText.js +44 -44
  27. package/src/lib/cc/CCScene.js +42 -42
  28. package/src/lib/cc/CCSceneAsset.js +302 -302
  29. package/src/lib/cc/CCSize.js +26 -26
  30. package/src/lib/cc/CCSprite.js +94 -94
  31. package/src/lib/cc/CCTrs.js +74 -74
  32. package/src/lib/cc/CCVec2.js +26 -26
  33. package/src/lib/cc/CCVec3.js +29 -29
  34. package/src/lib/cc/CCWidget.js +98 -98
  35. package/src/lib/cc/index.js +42 -42
  36. package/src/lib/fire-utils.js +373 -373
  37. package/src/lib/json-parser.js +185 -185
  38. package/src/lib/node-utils.js +395 -395
  39. package/src/lib/screenshot/index.html +29 -29
  40. package/src/lib/screenshot-core.js +285 -286
  41. package/src/lib/templates.js +49 -49
  42. package/src/lib/utils.js +202 -202
@@ -1,185 +1,185 @@
1
- /**
2
- * JSON 解析器
3
- * 将简化JSON转换为CCNode对象树
4
- */
5
-
6
- const { CCNode, CCCanvas, CCWidget, CCSprite, CCLabel, CCButton, CCCamera, CCRichText } = require('./cc');
7
- const { parseColor } = require('./utils');
8
-
9
- /**
10
- * 创建组件实例
11
- */
12
- function createComponent(type) {
13
- switch (type.toLowerCase()) {
14
- case 'canvas': return new CCCanvas();
15
- case 'widget': return new CCWidget();
16
- case 'sprite': return new CCSprite();
17
- case 'label': return new CCLabel();
18
- case 'button': return new CCButton();
19
- case 'camera': return new CCCamera();
20
- case 'richtext': return new CCRichText();
21
- default: return null;
22
- }
23
- }
24
-
25
- /**
26
- * 解析组件定义
27
- */
28
- function parseComponent(compDef) {
29
- if (typeof compDef === 'string') {
30
- return { type: compDef, props: {} };
31
- }
32
- if (typeof compDef === 'object' && compDef.type) {
33
- const props = { ...compDef };
34
- delete props.type;
35
- return { type: compDef.type, props };
36
- }
37
- return null;
38
- }
39
-
40
- /**
41
- * 应用组件属性
42
- */
43
- function applyComponentProps(comp, props, node) {
44
- if (!props) return;
45
-
46
- for (const [key, value] of Object.entries(props)) {
47
- switch (key) {
48
- case 'string':
49
- if (comp._string !== undefined) {
50
- comp._string = value;
51
- if (comp._N$string !== undefined) comp._N$string = value;
52
- }
53
- break;
54
- case 'fontSize':
55
- if (comp._fontSize !== undefined) comp._fontSize = value;
56
- break;
57
- case 'lineHeight':
58
- if (comp._lineHeight !== undefined) comp._lineHeight = value;
59
- break;
60
- case 'sizeMode':
61
- if (comp._sizeMode !== undefined) comp._sizeMode = value;
62
- break;
63
- case 'horizontalAlign':
64
- // 支持语义化字符串:left / center / right
65
- if (comp._N$horizontalAlign !== undefined) {
66
- comp._N$horizontalAlign = CCLabel.parseHAlign(value);
67
- } else if (comp._horizontalAlign !== undefined) {
68
- comp._horizontalAlign = CCLabel.parseHAlign(value);
69
- }
70
- break;
71
- case 'verticalAlign':
72
- // 支持语义化字符串:top / center / bottom
73
- if (comp._N$verticalAlign !== undefined) {
74
- comp._N$verticalAlign = CCLabel.parseVAlign(value);
75
- } else if (comp._verticalAlign !== undefined) {
76
- comp._verticalAlign = CCLabel.parseVAlign(value);
77
- }
78
- break;
79
- case 'color':
80
- // 兼容写法:组件内的 color 同步到节点颜色
81
- // (Cocos 中文字/富文本颜色本质是节点颜色,不是组件属性)
82
- if (node) {
83
- const parsed = parseColor(value);
84
- if (parsed && node._color) {
85
- node._color.r = parsed.r;
86
- node._color.g = parsed.g;
87
- node._color.b = parsed.b;
88
- node._color.a = parsed.a;
89
- }
90
- }
91
- break;
92
- default:
93
- if (comp[key] !== undefined) {
94
- comp[key] = value;
95
- }
96
- }
97
- }
98
- }
99
-
100
- /**
101
- * 应用属性到节点
102
- */
103
- function applyNodeProps(node, def) {
104
- if (def.name) node._name = def.name;
105
- if (def.active !== undefined) node._active = def.active;
106
- if (def.opacity !== undefined) node._opacity = def.opacity;
107
- if (def.width !== undefined) node._contentSize.width = def.width;
108
- if (def.height !== undefined) node._contentSize.height = def.height;
109
- if (def.x !== undefined) node._trs.array[0] = def.x;
110
- if (def.y !== undefined) node._trs.array[1] = def.y;
111
- if (def.rotation !== undefined) {
112
- node._trs.array[5] = def.rotation * Math.PI / 180;
113
- node._eulerAngles.z = def.rotation;
114
- }
115
- if (def.scaleX !== undefined) node._trs.array[7] = def.scaleX;
116
- if (def.scaleY !== undefined) node._trs.array[8] = def.scaleY;
117
- if (def.anchorX !== undefined) node._anchorPoint.x = def.anchorX;
118
- if (def.anchorY !== undefined) node._anchorPoint.y = def.anchorY;
119
- if (def.color) {
120
- const parsed = parseColor(def.color);
121
- if (parsed) {
122
- node._color.set(parsed.r, parsed.g, parsed.b, parsed.a);
123
- }
124
- }
125
- }
126
-
127
- /**
128
- * 解析节点定义(递归)
129
- * @param {Object} def - 节点定义
130
- * @returns {CCNode}
131
- */
132
- function parseNode(def) {
133
- const node = new CCNode(def.name || 'Node');
134
-
135
- // 应用属性
136
- applyNodeProps(node, def);
137
-
138
- // 添加组件
139
- if (def.components && def.components.length > 0) {
140
- node._components = [];
141
- for (const compDef of def.components) {
142
- const parsed = parseComponent(compDef);
143
- if (parsed) {
144
- const comp = createComponent(parsed.type);
145
- if (comp) {
146
- applyComponentProps(comp, parsed.props, node);
147
- comp.node = node;
148
- node._components.push(comp);
149
- }
150
- }
151
- }
152
- }
153
-
154
- // 递归处理子节点
155
- if (def.children && def.children.length > 0) {
156
- node._children = [];
157
- for (const childDef of def.children) {
158
- const child = parseNode(childDef);
159
- child._parent = node;
160
- node._children.push(child);
161
- }
162
- }
163
-
164
- return node;
165
- }
166
-
167
- /**
168
- * 从简化JSON解析为CCNode树
169
- * @param {Object|string} json - JSON对象或字符串
170
- * @returns {CCNode}
171
- */
172
- function fromJSON(json) {
173
- if (typeof json === 'string') {
174
- json = JSON.parse(json.replace(/^\uFEFF/, '').trim());
175
- }
176
-
177
- const rootDef = Array.isArray(json) ? json[0] : json;
178
- return parseNode(rootDef);
179
- }
180
-
181
- module.exports = {
182
- fromJSON,
183
- parseNode,
184
- applyNodeProps
185
- };
1
+ /**
2
+ * JSON 解析器
3
+ * 将简化JSON转换为CCNode对象树
4
+ */
5
+
6
+ const { CCNode, CCCanvas, CCWidget, CCSprite, CCLabel, CCButton, CCCamera, CCRichText } = require('./cc');
7
+ const { parseColor } = require('./utils');
8
+
9
+ /**
10
+ * 创建组件实例
11
+ */
12
+ function createComponent(type) {
13
+ switch (type.toLowerCase()) {
14
+ case 'canvas': return new CCCanvas();
15
+ case 'widget': return new CCWidget();
16
+ case 'sprite': return new CCSprite();
17
+ case 'label': return new CCLabel();
18
+ case 'button': return new CCButton();
19
+ case 'camera': return new CCCamera();
20
+ case 'richtext': return new CCRichText();
21
+ default: return null;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * 解析组件定义
27
+ */
28
+ function parseComponent(compDef) {
29
+ if (typeof compDef === 'string') {
30
+ return { type: compDef, props: {} };
31
+ }
32
+ if (typeof compDef === 'object' && compDef.type) {
33
+ const props = { ...compDef };
34
+ delete props.type;
35
+ return { type: compDef.type, props };
36
+ }
37
+ return null;
38
+ }
39
+
40
+ /**
41
+ * 应用组件属性
42
+ */
43
+ function applyComponentProps(comp, props, node) {
44
+ if (!props) return;
45
+
46
+ for (const [key, value] of Object.entries(props)) {
47
+ switch (key) {
48
+ case 'string':
49
+ if (comp._string !== undefined) {
50
+ comp._string = value;
51
+ if (comp._N$string !== undefined) comp._N$string = value;
52
+ }
53
+ break;
54
+ case 'fontSize':
55
+ if (comp._fontSize !== undefined) comp._fontSize = value;
56
+ break;
57
+ case 'lineHeight':
58
+ if (comp._lineHeight !== undefined) comp._lineHeight = value;
59
+ break;
60
+ case 'sizeMode':
61
+ if (comp._sizeMode !== undefined) comp._sizeMode = value;
62
+ break;
63
+ case 'horizontalAlign':
64
+ // 支持语义化字符串:left / center / right
65
+ if (comp._N$horizontalAlign !== undefined) {
66
+ comp._N$horizontalAlign = CCLabel.parseHAlign(value);
67
+ } else if (comp._horizontalAlign !== undefined) {
68
+ comp._horizontalAlign = CCLabel.parseHAlign(value);
69
+ }
70
+ break;
71
+ case 'verticalAlign':
72
+ // 支持语义化字符串:top / center / bottom
73
+ if (comp._N$verticalAlign !== undefined) {
74
+ comp._N$verticalAlign = CCLabel.parseVAlign(value);
75
+ } else if (comp._verticalAlign !== undefined) {
76
+ comp._verticalAlign = CCLabel.parseVAlign(value);
77
+ }
78
+ break;
79
+ case 'color':
80
+ // 兼容写法:组件内的 color 同步到节点颜色
81
+ // (Cocos 中文字/富文本颜色本质是节点颜色,不是组件属性)
82
+ if (node) {
83
+ const parsed = parseColor(value);
84
+ if (parsed && node._color) {
85
+ node._color.r = parsed.r;
86
+ node._color.g = parsed.g;
87
+ node._color.b = parsed.b;
88
+ node._color.a = parsed.a;
89
+ }
90
+ }
91
+ break;
92
+ default:
93
+ if (comp[key] !== undefined) {
94
+ comp[key] = value;
95
+ }
96
+ }
97
+ }
98
+ }
99
+
100
+ /**
101
+ * 应用属性到节点
102
+ */
103
+ function applyNodeProps(node, def) {
104
+ if (def.name) node._name = def.name;
105
+ if (def.active !== undefined) node._active = def.active;
106
+ if (def.opacity !== undefined) node._opacity = def.opacity;
107
+ if (def.width !== undefined) node._contentSize.width = def.width;
108
+ if (def.height !== undefined) node._contentSize.height = def.height;
109
+ if (def.x !== undefined) node._trs.array[0] = def.x;
110
+ if (def.y !== undefined) node._trs.array[1] = def.y;
111
+ if (def.rotation !== undefined) {
112
+ node._trs.array[5] = def.rotation * Math.PI / 180;
113
+ node._eulerAngles.z = def.rotation;
114
+ }
115
+ if (def.scaleX !== undefined) node._trs.array[7] = def.scaleX;
116
+ if (def.scaleY !== undefined) node._trs.array[8] = def.scaleY;
117
+ if (def.anchorX !== undefined) node._anchorPoint.x = def.anchorX;
118
+ if (def.anchorY !== undefined) node._anchorPoint.y = def.anchorY;
119
+ if (def.color) {
120
+ const parsed = parseColor(def.color);
121
+ if (parsed) {
122
+ node._color.set(parsed.r, parsed.g, parsed.b, parsed.a);
123
+ }
124
+ }
125
+ }
126
+
127
+ /**
128
+ * 解析节点定义(递归)
129
+ * @param {Object} def - 节点定义
130
+ * @returns {CCNode}
131
+ */
132
+ function parseNode(def) {
133
+ const node = new CCNode(def.name || 'Node');
134
+
135
+ // 应用属性
136
+ applyNodeProps(node, def);
137
+
138
+ // 添加组件
139
+ if (def.components && def.components.length > 0) {
140
+ node._components = [];
141
+ for (const compDef of def.components) {
142
+ const parsed = parseComponent(compDef);
143
+ if (parsed) {
144
+ const comp = createComponent(parsed.type);
145
+ if (comp) {
146
+ applyComponentProps(comp, parsed.props, node);
147
+ comp.node = node;
148
+ node._components.push(comp);
149
+ }
150
+ }
151
+ }
152
+ }
153
+
154
+ // 递归处理子节点
155
+ if (def.children && def.children.length > 0) {
156
+ node._children = [];
157
+ for (const childDef of def.children) {
158
+ const child = parseNode(childDef);
159
+ child._parent = node;
160
+ node._children.push(child);
161
+ }
162
+ }
163
+
164
+ return node;
165
+ }
166
+
167
+ /**
168
+ * 从简化JSON解析为CCNode树
169
+ * @param {Object|string} json - JSON对象或字符串
170
+ * @returns {CCNode}
171
+ */
172
+ function fromJSON(json) {
173
+ if (typeof json === 'string') {
174
+ json = JSON.parse(json.replace(/^\uFEFF/, '').trim());
175
+ }
176
+
177
+ const rootDef = Array.isArray(json) ? json[0] : json;
178
+ return parseNode(rootDef);
179
+ }
180
+
181
+ module.exports = {
182
+ fromJSON,
183
+ parseNode,
184
+ applyNodeProps
185
+ };