好的,所以这一直困扰着我,所以我想我会把它发布在这里。这是一个特定的主题,基本上不可能找到任何关于如何做到这一点的参考。
for (var i:int=0; i<=Main.bloonList.length-1; i++)
{
//loop through the children in enemyHolder
var cEnemy = Main.bloonList[i];//define a movieclip that will hold the current child
//this simple formula with get us the distance of the current enemy
if (Math.sqrt(Math.pow(cEnemy.y - this.y,2) + Math.pow(cEnemy.x - this.x,2)) < 100)
{
shoot(cEnemy);
timer = 0;
}
}
这是我目前的代码,我想知道如何找出哪个敌人是沿着轨道最远的。我可以通过使用它找到它。
function onEnter(e:Event)
{
distanceTravelled=distanceTravelled+xSpeed+Yspeed
}
但是,我如何告诉for循环定位具有最高值的那个?
答案 0 :(得分:2)
只需在当前for循环中更新新变量(例如highestDistEnemy
),即可找到最高距离值。您使用第一个敌人MovieClip
对象初始化变量,并且只有当敌人的距离大于之前highestDistEnemy
的距离时才将其更新为新的敌人对象。在代码中:
if(distance(curEnemyDistance) > distance(highestDistEnemy)) {
highestDistEnemy = curEnemy;
}
其中,距离只计算距离,因为您已在计算距离并在循环开始时将highestDistEnemy
初始化为Main.bloonList[0]
。
答案 1 :(得分:1)
在循环所有敌人后跟踪最远的敌人。最后拍摄。
<强>伪代码强>
var maxDistance = 0;
var furthesEnemy = null;
var currentDistance = null;
for (var i:int=0; i<=Main.bloonList.length-1; i++) {
//loop through the children in enemyHolder
var cEnemy = Main.bloonList[i];
//this simple formula with get us the distance of the current enemy
currentDistance = Math.sqrt(Math.pow(cEnemy.y - this.y,2) + Math.pow(cEnemy.x - this.x,2));
if (currentDistance > maxDistance) {
maxdistance = currentDistance;
furthesEnemy = cEnemy;
}
}
shoot(furthesEnemy);