首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在遍历相同向量的循环中拼接向量外的元素(ActionScript 3)

在遍历相同向量的循环中拼接向量外的元素(ActionScript 3)
EN

Stack Overflow用户
提问于 2012-11-03 03:22:57
回答 1查看 1.1K关注 0票数 0

我正在做一个简单的游戏,并且有一个充满敌人的矢量,以便从我的“激光”对象(它是一个空间混搭)对他们进行命中检查。每个激光循环通过矢量,并检查它是否遮挡了命中的圆。问题在于,当一个激光摧毁一个敌人时,其余的激光也试图检查相同的矢量,结果却超出了边界,因为敌人已经被拼接出来了,它改变了矢量的大小。

代码语言:javascript
复制
for each (var enemy:Enemy in enemies){
                var distanceX = this.x - enemy.x;
                var distanceY = this.y - enemy.y;
                var distance = Math.sqrt( (distanceX*distanceX) + (distanceY*distanceY) );

                if (distance <= enemy.hitRadius) {
                    enemy.removeEnemy();
                    enemies.splice(enemies.indexOf(enemy),enemies.indexOf(enemy));
                }
}

我如何收集要删除的Vector中单个元素的索引,然后仅在每个激光对象完成检查后才将其删除?

编辑:下面是我的Enemy类中的removeEnemy()函数,以防万一:

代码语言:javascript
复制
public function removeEnemy(){
            removeEventListener(Event.ENTER_FRAME, move);
            parent.removeChild(this);
            trace("removed Enemy", enemies.indexOf(this));
        }

编辑编辑:在我的removeEnemy()函数中,我也得到了一个指向"parent“的空引用指针错误...但只是偶尔。我有一种感觉,如果我解决了这两个问题中的一个,另一个问题也会得到解决,但我不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-03 05:38:50

我修好了!问题实际上出在我如何使用"splice()“方法上。事实证明,第二个参数不是停止拼接位置的结束索引,而是要拼接的元素的数量。因此,当我尝试拼接元素0时,我没有拼接任何东西,而当我试图拼接元素3时,我也拼接了4和5。我觉得自己像个笨蛋,因为没有正确阅读API并在这上面浪费了几个小时。感谢所有发表评论的人--你们帮我排除了我认为的问题所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13201743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档