我目前正在撰写一款简单的太空战争游戏(截图可在此处找到:http://prntscr.com/2q9juj)
敌舰随机从屏幕右侧进入。我应用bullet.hitTestObject(enemyShip)
来检查子弹是否接触敌舰。
如果它命中,我需要从游戏中移除子弹和敌舰。(我试图调整其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);
}
}
}
有人帮忙吗?提前谢谢。
答案 0 :(得分:1)
像这样使用`removeChild',(我不知道你是如何将它们添加到显示列表中的)
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
}
}
}
答案 1 :(得分:0)
我想我可以解决它,我不知道......但是尝试这个改变:
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);
}
}
}