im в настоящее время ищет эффективный и эффективный способ создания, управления и удаления мувиклипов эффективным образом. Что я думал о делать это, чтобы создать класс контроллера, который будет обрабатывать создание и удаление мувиклипа с использованием массивов и этот скрипта ...Как справиться с несколькими ссылками мувиклипов
private static var enemyShips:Array = new Array();
public static function addEnemy(ship:MovieClip):void
{
enemyShips.push(ship);
trace(enemyShips.length);
ship.id = enemyShips.length - 1;
Globals._stage.addChild(ship);
}
public static function getEnemy():Array
{
return enemyShips;
}
public static function removeEnemy(i:int):void
{
var ep:ExplosionParticle;
for(var j:int = 0; j < 150; j++)
{
ep = new ExplosionParticle(enemyShips[i].x, enemyShips[i].y);
Globals._stage.addChild(ep);
}
Globals._stage.removeChild(enemyShips[i]);
updatePositions(enemyShips, i+1);
enemyShips.splice(i, 1);
}
private static function updatePositions(array:Array, position:int):void
{
for(var i:int = position; i < array.length;i++)
{
array[i].id -=1;
}
}
Для быстрого и простого объяснения некоторых переменных, Глобал являются чтобы разрешить создание экземпляров внутри класса без прямого доступа к этапу.
Этот скрипт прекрасно работает до тех пор, пока не произойдет два случая.
Первый случай, когда в одном кадре создаются два мувиклипа, а второй случай - удаление.
Я знаю, что это связано с тем, когда первый мувиклип создается или удаляется в кадре, происходит сортировка массива, что делает вторую позицию мувиклипа нулевой. Однако мой вопрос заключается в том, что является более эффективным способом контроля над такими случаями, чтобы предотвратить это событие?
Имейте в виду, что это управление динамически создаваемыми экземплярами мувиклипа.
Премного,
Raider00321
Предложение шахты заключается в использовании 'Vector. 'вместо' Array' для хранения вражеских кораблей. –
jfgi
Я раньше не работал с AS3 Vector. плохо заглядывать в него – Raider00321