Здравствуйте.
Цель: Сделать так, чтобы в определённом массиве были те объекты, которые находятся под прицелом.
Положение: Имеется два метода: один метод A добавляет в массив объекты, другой метод B проверяет какие объекты соприкасаются с прицелом и те, которые не соприкасаются удаляются.
Метод A:
Код AS3:
//Добавление всех врагов в массив:
private function additionEnemies():void
{
const ENEMIESLENGTH:int = Aiming.enemies.length;
for(var addition:int = 0; ENEMIESLENGTH> addition; addition++)
{
const FEEBLE:MovieClip = Aiming.enemies[addition];
var are:Boolean = true;
//Если аналогичного объекта нету в target, то:
for each(var t:MovieClip in target)
{
if(FEEBLE== t)
{
are = false;
}
}
//Добавляю объект.
if(are)
{
target.push(FEEBLE);
}
}
}
Метод B:
Код AS3:
//Кто находится в области прицела:
private function beRegionEnemies():void
{
const TARGETLENGTH:int = target.length;
for(var addition:int = 0; addition < TARGETLENGTH; addition++)
{
const ENEMY:MovieClip = target[addition];
var onePoint:Point = new Point(); //Определяю первую точку:
var twoPoint:Point = new Point(); //Определяю вторую точку:
var r:Number = -rotation*Math.PI/180;
onePoint.x = ENEMY.x - x;
onePoint.y = ENEMY.y - y;
twoPoint.x = onePoint.x*Math.cos(r) - onePoint.y*Math.sin(r);
twoPoint.y = onePoint.x*Math.sin(r) + onePoint.y*Math.cos(r);
if(range >= getDistanceForesightAndTarget(twoPoint,new Point()) && limit > Math.abs(twoPoint.y))
{
ENEMY.deleted = false;
}
else
{
ENEMY.deleted = true;
}
target[addition] = ENEMY;
}
var ids:Array = [];
for(var definition:int = 0; TARGETLENGTH > definition; definition++)
{
const DELETED:Boolean = target[definition].deleted;
if(DELETED)
{
ids.push(definition);
}
}
const IDSLENGTH:int = ids.length;
for(var removal:int = 0; removal < IDSLENGTH; removal++)
{
const ID:int = ids[removal];
target.splice(ID,1);
}
ids.splice(0,IDSLENGTH);
}
Проблема: Когда на сцене всего один объект, я навожу на него прицел и длина массива составляет 1, когда я убираю прицел с объекта, то длина соответственно становится 0. После того как добавляется второй объект длина массива уже автоматически становится равна 1, даже если я не навожу на объект прицел.
Вопрос: Как можно решить данную проблему?