Если количество слоёв невелико и количество объектов тоже, то можно ввести параметр "слой" для объектов, и потом в цикле пробегать по слоям:
(Для трёх слоёв - задний, средний, передний - можно взять -1, 0, 1, просто для понятности)
Псевдокод:
Global depthStart% = -1
Global depthEnd% = 1
For local k%= depthStart To depthEnd
for local sprite:TSprite = eachin listSprites
if(sprite.layer <> k) continue 'пропускаем слой
//тут логику и рисуем
next
Next