@@ -62,7 +62,8 @@ cc.HashElement = cc.Class.extend(/** @lends cc.HashElement# */{
6262 * @extends cc.Class
6363 */
6464cc . ActionManager = cc . Class . extend ( {
65- _targets :null ,
65+ _hashTargets :null ,
66+ _arrayTargets :null ,
6667 _currentTarget :null ,
6768 _currentTargetSalvaged :false ,
6869
@@ -78,7 +79,8 @@ cc.ActionManager = cc.Class.extend({
7879 * Constructor
7980 */
8081 ctor :function ( ) {
81- this . _targets = [ ] ;
82+ this . _hashTargets = { } ;
83+ this . _arrayTargets = [ ] ;
8284 this . _currentTarget = null ;
8385 this . _currentTargetSalvaged = false ;
8486 } ,
@@ -98,13 +100,14 @@ cc.ActionManager = cc.Class.extend({
98100 throw "cc.ActionManager.addAction(): action must be non-null" ;
99101
100102 //check if the action target already exists
101- var element = this . _searchElementByTarget ( this . _targets , target ) ;
103+ var element = this . _hashTargets [ target . __instanceId ] ;
102104 //if doesnt exists, create a hashelement and push in mpTargets
103105 if ( ! element ) {
104106 element = new cc . HashElement ( ) ;
105107 element . paused = paused ;
106108 element . target = target ;
107- this . _targets . push ( element ) ;
109+ this . _hashTargets [ target . __instanceId ] = element ;
110+ this . _arrayTargets . push ( element ) ;
108111 }
109112 //creates a array for that eleemnt to hold the actions
110113 this . _actionAllocWithHashElement ( element ) ;
@@ -117,7 +120,7 @@ cc.ActionManager = cc.Class.extend({
117120 * Removes all actions from all the targets.
118121 */
119122 removeAllActions :function ( ) {
120- var locTargets = this . _targets ;
123+ var locTargets = this . _arrayTargets ;
121124 for ( var i = 0 ; i < locTargets . length ; i ++ ) {
122125 var element = locTargets [ i ] ;
123126 if ( element )
@@ -133,9 +136,7 @@ cc.ActionManager = cc.Class.extend({
133136 // explicit null handling
134137 if ( target == null )
135138 return ;
136- var element = this . _searchElementByTarget ( this . _targets , target ) ;
137-
138- //var element = (target in this._targets)? this._targets[ptarget]: null;
139+ var element = this . _hashTargets [ target . __instanceId ] ;
139140 if ( element ) {
140141 if ( element . actions . indexOf ( element . currentAction ) !== - 1 && ! ( element . currentActionSalvaged ) )
141142 element . currentActionSalvaged = true ;
@@ -146,9 +147,7 @@ cc.ActionManager = cc.Class.extend({
146147 } else {
147148 this . _deleteHashElement ( element ) ;
148149 }
149- } //else {
150- //cc.log("cocos2d: removeAllActionsFromTarget: Target not found");
151- //}
150+ }
152151 } ,
153152 /** Removes an action given an action reference.
154153 * @param {cc.Action } action
@@ -158,7 +157,7 @@ cc.ActionManager = cc.Class.extend({
158157 if ( action == null )
159158 return ;
160159 var target = action . getOriginalTarget ( ) ;
161- var element = this . _searchElementByTarget ( this . _targets , target ) ;
160+ var element = this . _hashTargets [ target . __instanceId ] ;
162161
163162 if ( element ) {
164163 for ( var i = 0 ; i < element . actions . length ; i ++ ) {
@@ -182,7 +181,7 @@ cc.ActionManager = cc.Class.extend({
182181 if ( ! target )
183182 throw "cc.ActionManager.removeActionByTag(): target must be non-null" ;
184183
185- var element = this . _searchElementByTarget ( this . _targets , target ) ;
184+ var element = this . _hashTargets [ target . __instanceId ] ;
186185
187186 if ( element ) {
188187 var limit = element . actions . length ;
@@ -207,7 +206,7 @@ cc.ActionManager = cc.Class.extend({
207206 if ( tag == cc . ACTION_TAG_INVALID )
208207 cc . log ( "cc.ActionManager.getActionByTag(): an invalid tag" ) ;
209208
210- var element = this . _searchElementByTarget ( this . _targets , target ) ;
209+ var element = this . _hashTargets [ target . __instanceId ] ;
211210 if ( element ) {
212211 if ( element . actions != null ) {
213212 for ( var i = 0 ; i < element . actions . length ; ++ i ) {
@@ -231,7 +230,7 @@ cc.ActionManager = cc.Class.extend({
231230 * @return {Number }
232231 */
233232 numberOfRunningActionsInTarget :function ( target ) {
234- var element = this . _searchElementByTarget ( this . _targets , target ) ;
233+ var element = this . _hashTargets [ target . __instanceId ] ;
235234 if ( element )
236235 return ( element . actions ) ? element . actions . length : 0 ;
237236
@@ -241,15 +240,15 @@ cc.ActionManager = cc.Class.extend({
241240 * @param {object } target
242241 */
243242 pauseTarget :function ( target ) {
244- var element = this . _searchElementByTarget ( this . _targets , target ) ;
243+ var element = this . _hashTargets [ target . __instanceId ] ;
245244 if ( element )
246245 element . paused = true ;
247246 } ,
248247 /** Resumes the target. All queued actions will be resumed.
249248 * @param {object } target
250249 */
251250 resumeTarget :function ( target ) {
252- var element = this . _searchElementByTarget ( this . _targets , target ) ;
251+ var element = this . _hashTargets [ target . __instanceId ] ;
253252 if ( element )
254253 element . paused = false ;
255254 } ,
@@ -259,7 +258,7 @@ cc.ActionManager = cc.Class.extend({
259258 */
260259 pauseAllRunningActions :function ( ) {
261260 var idsWithActions = [ ] ;
262- var locTargets = this . _targets ;
261+ var locTargets = this . _arrayTargets ;
263262 for ( var i = 0 ; i < locTargets . length ; i ++ ) {
264263 var element = locTargets [ i ] ;
265264 if ( element && ! element . paused ) {
@@ -314,8 +313,9 @@ cc.ActionManager = cc.Class.extend({
314313 } ,
315314
316315 _deleteHashElement :function ( element ) {
317- cc . ArrayRemoveObject ( this . _targets , element ) ;
318316 if ( element ) {
317+ delete this . _hashTargets [ element . target . __instanceId ] ;
318+ cc . ArrayRemoveObject ( this . _arrayTargets , element ) ;
319319 element . actions = null ;
320320 element . target = null ;
321321 }
@@ -332,7 +332,7 @@ cc.ActionManager = cc.Class.extend({
332332 * @param {Number } dt delta time in seconds
333333 */
334334 update :function ( dt ) {
335- var locTargets = this . _targets , locCurrTarget ;
335+ var locTargets = this . _arrayTargets , locCurrTarget ;
336336 for ( var elt = 0 ; elt < locTargets . length ; elt ++ ) {
337337 this . _currentTarget = locTargets [ elt ] ;
338338 locCurrTarget = this . _currentTarget ;
0 commit comments