@@ -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 } ,
@@ -95,13 +97,14 @@ cc.ActionManager = cc.Class.extend({
9597 cc . Assert ( action != null , "no action" ) ;
9698 cc . Assert ( target != null , "" ) ;
9799 //check if the action target already exists
98- var element = this . _searchElementByTarget ( this . _targets , target ) ;
100+ var element = this . _hashTargets [ target . __instanceId ] ;
99101 //if doesnt exists, create a hashelement and push in mpTargets
100102 if ( ! element ) {
101103 element = new cc . HashElement ( ) ;
102104 element . paused = paused ;
103105 element . target = target ;
104- this . _targets . push ( element ) ;
106+ this . _hashTargets [ target . __instanceId ] = element ;
107+ this . _arrayTargets . push ( element ) ;
105108 }
106109 //creates a array for that eleemnt to hold the actions
107110 this . _actionAllocWithHashElement ( element ) ;
@@ -114,7 +117,7 @@ cc.ActionManager = cc.Class.extend({
114117 * Removes all actions from all the targets.
115118 */
116119 removeAllActions :function ( ) {
117- var locTargets = this . _targets ;
120+ var locTargets = this . _arrayTargets ;
118121 for ( var i = 0 ; i < locTargets . length ; i ++ ) {
119122 var element = locTargets [ i ] ;
120123 if ( element )
@@ -130,9 +133,7 @@ cc.ActionManager = cc.Class.extend({
130133 // explicit null handling
131134 if ( target == null )
132135 return ;
133- var element = this . _searchElementByTarget ( this . _targets , target ) ;
134-
135- //var element = (target in this._targets)? this._targets[ptarget]: null;
136+ var element = this . _hashTargets [ target . __instanceId ] ;
136137 if ( element ) {
137138 if ( element . actions . indexOf ( element . currentAction ) !== - 1 && ! ( element . currentActionSalvaged ) )
138139 element . currentActionSalvaged = true ;
@@ -143,9 +144,7 @@ cc.ActionManager = cc.Class.extend({
143144 } else {
144145 this . _deleteHashElement ( element ) ;
145146 }
146- } //else {
147- //cc.log("cocos2d: removeAllActionsFromTarget: Target not found");
148- //}
147+ }
149148 } ,
150149 /** Removes an action given an action reference.
151150 * @param {cc.Action } action
@@ -155,7 +154,7 @@ cc.ActionManager = cc.Class.extend({
155154 if ( action == null )
156155 return ;
157156 var target = action . getOriginalTarget ( ) ;
158- var element = this . _searchElementByTarget ( this . _targets , target ) ;
157+ var element = this . _hashTargets [ target . __instanceId ] ;
159158
160159 if ( element ) {
161160 for ( var i = 0 ; i < element . actions . length ; i ++ ) {
@@ -177,7 +176,7 @@ cc.ActionManager = cc.Class.extend({
177176 cc . Assert ( tag != cc . ACTION_TAG_INVALID , "" ) ;
178177 cc . Assert ( target != null , "" ) ;
179178
180- var element = this . _searchElementByTarget ( this . _targets , target ) ;
179+ var element = this . _hashTargets [ target . __instanceId ] ;
181180
182181 if ( element ) {
183182 var limit = element . actions . length ;
@@ -200,7 +199,7 @@ cc.ActionManager = cc.Class.extend({
200199 */
201200 getActionByTag :function ( tag , target ) {
202201 cc . Assert ( tag != cc . ACTION_TAG_INVALID , "" ) ;
203- var element = this . _searchElementByTarget ( this . _targets , target ) ;
202+ var element = this . _hashTargets [ target . __instanceId ] ;
204203 if ( element ) {
205204 if ( element . actions != null ) {
206205 for ( var i = 0 ; i < element . actions . length ; ++ i ) {
@@ -224,7 +223,7 @@ cc.ActionManager = cc.Class.extend({
224223 * @return {Number }
225224 */
226225 numberOfRunningActionsInTarget :function ( target ) {
227- var element = this . _searchElementByTarget ( this . _targets , target ) ;
226+ var element = this . _hashTargets [ target . __instanceId ] ;
228227 if ( element )
229228 return ( element . actions ) ? element . actions . length : 0 ;
230229
@@ -234,15 +233,15 @@ cc.ActionManager = cc.Class.extend({
234233 * @param {object } target
235234 */
236235 pauseTarget :function ( target ) {
237- var element = this . _searchElementByTarget ( this . _targets , target ) ;
236+ var element = this . _hashTargets [ target . __instanceId ] ;
238237 if ( element )
239238 element . paused = true ;
240239 } ,
241240 /** Resumes the target. All queued actions will be resumed.
242241 * @param {object } target
243242 */
244243 resumeTarget :function ( target ) {
245- var element = this . _searchElementByTarget ( this . _targets , target ) ;
244+ var element = this . _hashTargets [ target . __instanceId ] ;
246245 if ( element )
247246 element . paused = false ;
248247 } ,
@@ -252,7 +251,7 @@ cc.ActionManager = cc.Class.extend({
252251 */
253252 pauseAllRunningActions :function ( ) {
254253 var idsWithActions = [ ] ;
255- var locTargets = this . _targets ;
254+ var locTargets = this . _arrayTargets ;
256255 for ( var i = 0 ; i < locTargets . length ; i ++ ) {
257256 var element = locTargets [ i ] ;
258257 if ( element && ! element . paused ) {
@@ -307,8 +306,9 @@ cc.ActionManager = cc.Class.extend({
307306 } ,
308307
309308 _deleteHashElement :function ( element ) {
310- cc . ArrayRemoveObject ( this . _targets , element ) ;
311309 if ( element ) {
310+ delete this . _hashTargets [ element . target . __instanceId ] ;
311+ cc . ArrayRemoveObject ( this . _arrayTargets , element ) ;
312312 element . actions = null ;
313313 element . target = null ;
314314 }
@@ -325,11 +325,11 @@ cc.ActionManager = cc.Class.extend({
325325 * @param {Number } dt delta time in seconds
326326 */
327327 update :function ( dt ) {
328- var locTargets = this . _targets , locCurrTarget ;
328+ var locTargets = this . _arrayTargets , locCurrTarget ;
329329 for ( var elt = 0 ; elt < locTargets . length ; elt ++ ) {
330330 this . _currentTarget = locTargets [ elt ] ;
331331 locCurrTarget = this . _currentTarget ;
332- this . _currentTargetSalvaged = false ;
332+ // this._currentTargetSalvaged = false;
333333 if ( ! locCurrTarget . paused ) {
334334 // The 'actions' CCMutableArray may change while inside this loop.
335335 for ( locCurrTarget . actionIndex = 0 ; locCurrTarget . actionIndex < locCurrTarget . actions . length ;
0 commit comments