Спасибо, ребята, эти ответы мне очень помогают!
Я пробовал CCSequence перед публикацией здесь, но безуспешно.
Проблема была в следующем:
Внутри CCSequence, которая удаляет строку, у меня есть 2 действия: первое затухает весь ряд блоков (длительность x секунд), а второе отбрасывает все блоки над строкой (длительность y секунд) .
Это прекрасно работает, если нужно удалить ТОЛЬКО ОДНУ строку, потому что, если имеется более одной строки, следующая CCSequence начинается почти в то же время, что и предыдущая, читая неправильную позицию блоков выше, что приводит к неправильному каскаду блоки.
Я решил, что используя более длинную CCSequence, которая принимает CCCallFuncND в качестве последнего аргумента:
id fadeOutSequence = [CCSequence actions:fadeout, destroyBlocks, notifyFadeFinish, nil];
//inside method specified for notifyFadeFinish:
id dropAbove = [CCSequence actions: dropBlocks, notifyDropFinish, nil];
//inside method specified for notifyDropFinish
//start a new delete sequence, if there is more rows to delete.
Теперь перейдем к гравитационному режиму, еще раз спасибо!