Всем привет. Как найти ближайший объект после удаления предыдущего ближайшего объекта.
Понятно что надо удалить мувиклип, удалить ближайший массив и заново отсортировать массивы и найти новый ближайший объект.
Логика понятна, но не могу написать рабочий код.
Исходник прикрепил.

Код AS1/AS2:
var enemyObjectsArray:Array = [];
/**
* Create Enemy
* ---------------
* This Method is used to create new enemy objects,
* attach movieClips to them and set the enemyObject's properties like position
*/
function createEnemy(numberOfEnemies:Number):Void
{
//run a for loop to create numberOfEnemies
for(var i = 0; i < numberOfEnemies; i++)
{
//attach a new enemy movieclip from the library
var tempEnemy_mc:MovieClip = _root.attachMovie("enemy", "enemy"+_root.getNextHighestDepth(), _root.getNextHighestDepth());
//set new enemy position
tempEnemy_mc._x = random(Stage.width);
tempEnemy_mc._y = random(Stage.height);
//save object properties such as a reference to our movieClip on root, distance total, etc
tempEnemy_obj = {myMc:tempEnemy_mc, distanceTotal:0, distanceY:0, distanceY:0}
//add the enemy object to array
enemyObjectsArray.push(tempEnemy_obj);
}
}
/**
* Update Enemy
* ---------------
* This Method is used to calculate distance between objects in enemyObjectsArray
* and sort the array based on distanceTotal using the "sortOn" function
*/
function updateEnemies():Void
{
//run a for loop on our array and update every enemy object in there
for(var i = 0; i < enemyObjectsArray.length; i++)
{
//set temporary variables that we'll use to reference the enemy/target
//enemy is an object
var enemy:Object = enemyObjectsArray[i];
//player_mc is a movieclip
var target:MovieClip = player_mc;
//To use movieClip method like gotoAndStop, gotoAndPlay, etc,
//we use the "myMc" parameter of our enemy object that we saved earlier.
//The mc parameter is basically a "link" to the enemy movieClip on stage
//tell movieclip to go to first frame
enemy.myMc.gotoAndStop(1);
//calculate distance between enemyObject's movieClip and target
enemy.distanceX = target._x - enemy.myMc._x;
enemy.distanceY = target._y - enemy.myMc._y;
//get total distance as one number
enemy.distanceTotal = Math.sqrt(enemy.distanceX * enemy.distanceX + enemy.distanceY * enemy.distanceY);
//sort the array based on the enemy object's "distanceTotal" parameter
enemyObjectsArray.sortOn("distanceTotal", Array.NUMERIC);
//the first item in our array (enemyObjectsArray[0])
//has the lowest distanceTotal value hense its the closest
trace(distanceTotal);
//tell the closest enemy movieClip to go to frame 2 to visually show that it's closest
enemyObjectsArray[0].myMc.gotoAndStop(2);
}
}
function reset():Void
{
for(var i = 0; i < enemyObjectsArray.length; i++)
{
var tempEnemy_mc:MovieClip = enemyObjectsArray[i].myMc;
tempEnemy_mc._x = random(Stage.width);
tempEnemy_mc._y = random(Stage.height);
trace(enemyObjectsArray);
}
}
//add an onEnterFrame to repeat our updateEnemies function every frame
_root.onEnterFrame = function():Void
{
updateEnemies();
}
//create some enemies
createEnemy(5);
//start/stop drag for player_mc
player_mc.onPress = function(){
startDrag(this);
}
player_mc.onRelease = function(){
stopDrag();
}
reset_btn.onRelease = function()
{
reset();
}