23
23
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
24
THE SOFTWARE.
25
25
****************************************************************************/
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 * $ /
69
28
/**
70
29
* Returns a Core Graphics rectangle structure corresponding to the data in a given string. <br/>
71
30
* The string is not localized, so items are always separated with a comma. <br/>
@@ -81,36 +40,9 @@ cc.splitWithForm = function (content, strs) {
81
40
* var rect = cc.RectFromString("{{3,2},{4,5} }");
82
41
*/
83
42
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 ] ) ) ;
114
46
} ;
115
47
116
48
/**
@@ -128,18 +60,9 @@ cc.RectFromString = function (content) {
128
60
* var point = cc.PointFromString("{3.0,2.5}");
129
61
*/
130
62
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 ] ) ) ;
143
66
} ;
144
67
145
68
/**
@@ -156,16 +79,7 @@ cc.PointFromString = function (content) {
156
79
* var size = cc.SizeFromString("{3.0,2.5}");
157
80
*/
158
81
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