2013-03-06 2 views
0

Я использовал эту строку кода, чтобы удалить элемент:AS3 Удаление объекта из массива?

tiles.splice(tiles.indexOf(tiles[i]), 1); 

Но потом, когда я проверяю значение, это все еще не пустой, на самом деле, он все еще содержит мувиклип она была внутри него.

Это работало, хотя:

tiles[tr] = null; 

Вопрос заключается в том, это еще хорошо, чтобы сделать это, как это? У меня есть мувики, добавленные и удаленные в этот массив, и я набираю removeChild (плитки [tr]; перед удалением из массива.

Я просто не хочу встретить какую-то страшную работу в будущем,

Спасибо.

+1

'tiles.splice (i, 1)' будет работать, не нужно использовать 'indexOf', посмотрите, устраняет ли это проблему. Также вы хотите иметь содержимое элемента (например, мувиклип), помеченного для коллекции мусора, или просто удалить его из массива? –

+0

@Sim Просто хочу, чтобы его удаляли из массива, он больше не понадобится. – Radicate

+0

Хорошо 'splice (..)' удаляет элемент, а затем сдвигает остальные элементы на одну позицию, поэтому, если вы соедините второй элемент в массив, 3-й элемент будет перемещаться вверх, чтобы занять положение 2-го, 4-й будет перемещаться на 3-ю позицию и т. д. Возможно, поэтому ваш след все еще говорит, что в этом месте есть что-то в этой позиции. –

ответ

1

сплайсинг вырезает элемент из массива, и все вышеперечисленные элементы перемещаются на один шаг вниз. Который также отражает длину Array. Итак, элемент, который вы находите, - это следующий элемент. Просто обнуление это сделает именно это. Оставьте остальную часть массива, как есть, с пустой позицией.

Также вам не нужно вызывать indexOf, если я уже занимаю нужную вам позицию.

tiles.splice(i, 1) 

сделаю.

+0

Можно ли переместить все вышеперечисленные элементы на один шаг вниз? – Radicate

+1

Splice делает именно это: если вы сплайсируете «2» из массива '[1, 2, 3, 4]' массив становится '[1, 3, 4]'. Если вы не сплайсируете и просто null, он становится '[1, null, 3, 4]'. –

Смежные вопросы