Skip to content

Commit 5aae010

Browse files
committed
Merge pull request #1485 from SmallAiTT/iss3690_ccns_dev3.0
issue #3690: Rewrite CCNS.js
2 parents 3b6142b + 617e4fc commit 5aae010

File tree

1 file changed

+12
-98
lines changed

1 file changed

+12
-98
lines changed

cocos2d/cocoa/CCNS.js

+12-98
Original file line numberDiff line numberDiff line change
@@ -23,49 +23,8 @@
2323
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2424
THE SOFTWARE.
2525
****************************************************************************/
26-
27-
/**
28-
* first, judge whether the form of the string like this: {x,y} <br/>
29-
* if the form is right,the string will be splited into the parameter strs;<br/>
30-
* or the parameter strs will be empty. <br/>
31-
* if the form is right return true,else return false.<br/>
32-
* @function
33-
* @param {String} content
34-
* @param {String} strs
35-
* @return {String}
36-
*/
37-
cc.splitWithForm = function (content, strs) {
38-
do {
39-
if (!content) break;
40-
41-
// string is empty
42-
if (content.length == 0) break;
43-
44-
var posLeft = content.indexOf('{');
45-
var posRight = content.indexOf('}');
46-
47-
// don't have '{' and '}'
48-
if (posLeft == -1 || posRight == -1) break;
49-
// '}' is before '{'
50-
if (posLeft > posRight) break;
51-
52-
var pointStr = content.substr(posLeft + 1, posRight - posLeft - 1);
53-
// nothing between '{' and '}'
54-
if (pointStr.length == 0) break;
55-
56-
var nPos1 = pointStr.indexOf('{');
57-
var nPos2 = pointStr.indexOf('}');
58-
// contain '{' or '}'
59-
if (nPos1 != -1 || nPos2 != -1) break;
60-
strs = pointStr.split(",");
61-
if (strs.length != 2 || strs[0] != null || strs[1] != null) {
62-
break;
63-
}
64-
} while (0);
65-
66-
return strs;
67-
};
68-
26+
var CCNS_REG1 = /^\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*$/;
27+
var CCNS_REG2 = /^\s*\{\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*,\s*\{\s*([\-]?\d+[.]?\d*)\s*,\s*([\-]?\d+[.]?\d*)\s*\}\s*\}\s*$/
6928
/**
7029
* Returns a Core Graphics rectangle structure corresponding to the data in a given string. <br/>
7130
* The string is not localized, so items are always separated with a comma. <br/>
@@ -81,36 +40,9 @@ cc.splitWithForm = function (content, strs) {
8140
* var rect = cc.RectFromString("{{3,2},{4,5}}");
8241
*/
8342
cc.RectFromString = function (content) {
84-
var result = cc.RectZero();
85-
do {
86-
if (!content) break;
87-
88-
// find the first '{' and the third '}'
89-
var posLeft = content.indexOf('{') + 1;
90-
var posRight = content.lastIndexOf('}', content.length);
91-
if (posLeft == -1 || posRight == -1) break;
92-
93-
content = content.substring(posLeft, posRight);
94-
var nPointEnd = content.indexOf('}');
95-
if (nPointEnd == -1) break;
96-
nPointEnd = content.indexOf(',', nPointEnd);
97-
if (nPointEnd == -1) break;
98-
// get the point string and size string
99-
var pointStr = content.substr(0, nPointEnd);
100-
var sizeStr = content.substr(nPointEnd + 1, content.length - nPointEnd);
101-
102-
// split the string with ','
103-
var pointInfo = cc.splitWithForm(pointStr);
104-
var sizeInfo = cc.splitWithForm(sizeStr);
105-
106-
var x = parseFloat(pointInfo[0]);
107-
var y = parseFloat(pointInfo[1]);
108-
var width = parseFloat(sizeInfo[0]);
109-
var height = parseFloat(sizeInfo[1]);
110-
111-
result = cc.rect(x, y, width, height);
112-
} while (0);
113-
return result;
43+
var result = CCNS_REG2.exec(content);
44+
if(!result) return cc.RectZero();
45+
return cc.rect(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]), parseFloat(result[4]));
11446
};
11547

11648
/**
@@ -128,18 +60,9 @@ cc.RectFromString = function (content) {
12860
* var point = cc.PointFromString("{3.0,2.5}");
12961
*/
13062
cc.PointFromString = function (content) {
131-
var ret = cc.PointZero();
132-
try {
133-
if (content == "")
134-
return ret;
135-
136-
var strs = cc.splitWithForm(content);
137-
var x = parseFloat(strs[0]);
138-
var y = parseFloat(strs[1]);
139-
ret = cc.p(x, y);
140-
} catch (e) {
141-
}
142-
return ret;
63+
var result = CCNS_REG1.exec(content);
64+
if(!result) return cc.PointZero();
65+
return cc.p(parseFloat(result[1]), parseFloat(result[2]));
14366
};
14467

14568
/**
@@ -156,16 +79,7 @@ cc.PointFromString = function (content) {
15679
* var size = cc.SizeFromString("{3.0,2.5}");
15780
*/
15881
cc.SizeFromString = function (content) {
159-
var ret = cc.SizeZero();
160-
try {
161-
if (content == "")
162-
return ret;
163-
164-
var strs = cc.splitWithForm(content);
165-
var width = parseFloat(strs[0]);
166-
var height = parseFloat(strs[1]);
167-
ret = cc.size(width, height);
168-
} catch (e) {
169-
}
170-
return ret;
171-
};
82+
var result = CCNS_REG1.exec(content);
83+
if(!result) return cc.SizeZero();
84+
return cc.size(parseFloat(result[1]), parseFloat(result[2]));
85+
};

0 commit comments

Comments
 (0)