Skip to content

Commit e9b955c

Browse files
committed
Merge pull request NeoGuo#8 from SmallBookworm/patch-3
新回收机制
2 parents bf9239d + 2f335f5 commit e9b955c

File tree

1 file changed

+39
-41
lines changed

1 file changed

+39
-41
lines changed

egret/demo/Fighter/src/fighter/GameContainer.ts

Lines changed: 39 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -159,51 +159,49 @@ module fighter
159159
var i:number = 0;
160160
var bullet:fighter.Bullet;
161161
var myBulletsCount:number = this.myBullets.length;
162-
var delArr:any[] = [];
163-
for(;i<myBulletsCount;i++) {
162+
for(;i < myBulletsCount;i++){
164163
bullet = this.myBullets[i];
165-
bullet.y -= 12*speedOffset;
166-
if(bullet.y<-bullet.height)
167-
delArr.push(bullet);
168-
}
169-
for(i=0;i<delArr.length;i++) {
170-
bullet = delArr[i];
171-
this.removeChild(bullet);
172-
fighter.Bullet.reclaim(bullet,"b1");
173-
this.myBullets.splice(this.myBullets.indexOf(bullet),1);
164+
if(bullet.y < -bullet.height){
165+
this.removeChild(bullet);
166+
Bullet.reclaim(bullet);
167+
this.myBullets.splice(i,1);
168+
i--;
169+
myBulletsCount--;
170+
}
171+
bullet.y -= 12 * speedOffset;
172+
174173
}
175-
delArr = [];
176174
//敌人飞机运动
177175
var theFighter:fighter.Airplane;
178176
var enemyFighterCount:number = this.enemyFighters.length;
179-
for(i=0;i<enemyFighterCount;i++) {
177+
for(i = 0;i < enemyFighterCount;i++){
180178
theFighter = this.enemyFighters[i];
181-
theFighter.y += 4*speedOffset;
182-
if(theFighter.y>this.stageH)
183-
delArr.push(theFighter);
184-
}
185-
for(i=0;i<delArr.length;i++) {
186-
theFighter = delArr[i];
187-
this.removeChild(theFighter);
188-
fighter.Airplane.reclaim(theFighter,"f2");
189-
theFighter.removeEventListener("createBullet",this.createBulletHandler,this);
190-
theFighter.stopFire();
191-
this.enemyFighters.splice(this.enemyFighters.indexOf(theFighter),1);
179+
if(theFighter.y>this.stage.stageHeight){
180+
this.removeChild(theFighter);
181+
Airplane.reclaim(theFighter);
182+
theFighter.removeEventListener("createBullet",this.createEnemyBulletHandler,this);
183+
theFighter.stopFire();
184+
this.enemyFighters.splice(i,1);
185+
i--;
186+
enemyFighterCount--;
187+
}
188+
theFighter.y += 4 * speedOffset;
189+
192190
}
193-
delArr = [];
194191
//敌人子弹运动
195192
var enemyBulletsCount:number = this.enemyBullets.length;
196-
for(i=0;i<enemyBulletsCount;i++) {
193+
for(i = 0;i < enemyBulletsCount;i++){
197194
bullet = this.enemyBullets[i];
198-
bullet.y += 8*speedOffset;
199-
if(bullet.y>this.stageH)
200-
delArr.push(bullet);
201-
}
202-
for(i=0;i<delArr.length;i++) {
203-
bullet = delArr[i];
204-
this.removeChild(bullet);
205-
fighter.Bullet.reclaim(bullet,"b2");
206-
this.enemyBullets.splice(this.enemyBullets.indexOf(bullet),1);
195+
if(bullet.y>this.stage.stageHeight){
196+
this.removeChild(bullet);
197+
Bullet.reclaim(bullet);
198+
this.enemyBullets.splice(i,1);
199+
i--;
200+
enemyBulletsCount--;//数组长度已经改变
201+
}
202+
203+
bullet.y += 8 * speedOffset;
204+
207205
}
208206
this.gameHitTest();
209207
}
@@ -258,7 +256,7 @@ module fighter
258256
this.myBullets.splice(this.myBullets.indexOf(bullet),1);
259257
else
260258
this.enemyBullets.splice(this.enemyBullets.indexOf(bullet),1);
261-
fighter.Bullet.reclaim(bullet,bullet.textureName);
259+
fighter.Bullet.reclaim(bullet);
262260
}
263261
this.myScore += delFighters.length;
264262
while(delFighters.length>0) {
@@ -267,7 +265,7 @@ module fighter
267265
theFighter.removeEventListener("createBullet",this.createBulletHandler,this);
268266
this.removeChild(theFighter);
269267
this.enemyFighters.splice(this.enemyFighters.indexOf(theFighter),1);
270-
fighter.Airplane.reclaim(theFighter,"f2");
268+
fighter.Airplane.reclaim(theFighter);
271269
}
272270
}
273271
}
@@ -287,12 +285,12 @@ module fighter
287285
while(this.myBullets.length>0) {
288286
bullet = this.myBullets.pop();
289287
this.removeChild(bullet);
290-
fighter.Bullet.reclaim(bullet,"b1");
288+
fighter.Bullet.reclaim(bullet);
291289
}
292290
while(this.enemyBullets.length>0) {
293291
bullet = this.enemyBullets.pop();
294292
this.removeChild(bullet);
295-
fighter.Bullet.reclaim(bullet,"b2");
293+
fighter.Bullet.reclaim(bullet);
296294
}
297295
//清理飞机
298296
var theFighter:fighter.Airplane;
@@ -301,7 +299,7 @@ module fighter
301299
theFighter.stopFire();
302300
theFighter.removeEventListener("createBullet",this.createBulletHandler,this);
303301
this.removeChild(theFighter);
304-
fighter.Airplane.reclaim(theFighter,"f2");
302+
fighter.Airplane.reclaim(theFighter);
305303
}
306304
//显示成绩
307305
this.scorePanel.showScore(this.myScore);
@@ -310,4 +308,4 @@ module fighter
310308
this.addChild(this.scorePanel);
311309
}
312310
}
313-
}
311+
}

0 commit comments

Comments
 (0)