Actionscript 3 必要时从游戏中移除子弹和敌舰
我目前正在写一个简单的太空战争游戏,(这里有一个截图:) 敌舰随机从屏幕右侧驶来。我使用一个Actionscript 3 必要时从游戏中移除子弹和敌舰,actionscript-3,flash,Actionscript 3,Flash,我目前正在写一个简单的太空战争游戏,(这里有一个截图:) 敌舰随机从屏幕右侧驶来。我使用一个bullet.hitTestObject(Eneyship)来检查子弹是否碰到敌舰 若它击中,我需要从游戏中移除子弹和敌舰。(我试着调整它的alpha值,但并没有移除,但过了一段时间,我的游戏开始慢慢运行) 下面是我的相关代码: for each(var bullet:Bullet_ in bullets){ bullet.x+=2; for each(var enemyShip:Enem
bullet.hitTestObject(Eneyship)
来检查子弹是否碰到敌舰
若它击中,我需要从游戏中移除子弹和敌舰。(我试着调整它的alpha值,但并没有移除,但过了一段时间,我的游戏开始慢慢运行)
下面是我的相关代码:
for each(var bullet:Bullet_ in bullets){
bullet.x+=2;
for each(var enemyShip:Enemy in enemies){
if(bullet.hitTestObject(enemyShip)){
enemyShip.alpha=0;
bullet.alpha=0;
// I want to remove both enemyShip and bullet here.
//**EDIT: I solved my problem writing 2 lines :**
bullets.splice(bullets.indexOf(bullet),1);
enemies.splice(enemies.indexOf(enemyShip),1);
}
}
}
有人帮我吗?提前感谢。像这样使用“removeChild”(我不知道您是如何将它们添加到显示列表中的) 我想我能解决它,我不知道。。。但请尝试以下更改:
@Rajneesh_Gaikwad我还有一个问题,当敌舰到达闪屏左侧时(我的意思是当它们不再可见时),我也需要将它们从我的阵列中移除,我可以在那里使用removeChild吗?
removeChild()
仅从显示列表中移除,而不是从阵列中移除。您必须将它们从数组中删除,并将它们设置为null
。
for each(var bullet:Bullet_ in bullets)
{
bullet.x+=2;
for each(var enemyShip:Enemy in enemies)
{
if(bullet.hitTestObject(enemyShip))
{
removeChild(bullet);
removeChild(enemyShip);
//here update you array(s) accordingly
}
}
}
for each(var bullet:Bullet_ in bullets){
bullet.x+=2;
for each(var enemyShip:Enemy in enemies) {
if (bullet.hitTestObject(enemyShip)) {
enemyShip.parent.removeChild(enemyShip);
bullet.parent.removeChild(bullet);
}
}
}