Skip to content

Commit 4fa3900

Browse files
committed
Update CCActionManager.js
Find a way to optimize the object
1 parent 8014fb1 commit 4fa3900

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

cocos2d/actions/CCActionManager.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ cc.HashElement = cc.Class.extend(/** @lends cc.HashElement# */{
6262
* @extends cc.Class
6363
*/
6464
cc.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

Comments
 (0)