Это потому, что вы удаляете спрайты внутри цикла for. Когда вы изменяете количество объектов в цикле при движении вперед, вы заполняете итерацию. Когда вы удаляете текущий элемент, все элементы, найденные в списке после этого элемента (и все еще подлежащие перечислению), теперь смещаются вниз по индексу, то есть элемент, который имел индекс i+1
, теперь имеет индекс i
.
Если вы удаляете из цикла, через который вы перебираете, правильный путь - перебирать в обратном порядке, как вы узнали. Таким образом, когда вы удаляете текущий элемент, все остальные элементы, которые все еще будут перечислены, будут иметь тот же индекс.