Странная проблема с заказом Z в Corona SDK?

Я пытаюсь создать круглую тень под изображением спрайта в своей игре. Однако по какой-то причине, хотя я сначала создаю круг, спрайт всегда появляется под ним. Вот код:

local circle = display.newCircle(100,100,30)
circle:setFillColor(0,0,0)
local hunter = display.newSprite(imageSheet,createAnimationSequence("Hunter",5))

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

Появляется круг, как и спрайт, только круг находится поверх спрайта, а не под ним, хотя я кодирую, чтобы он рисовался первым.


person Jordan Brown    schedule 08.07.2013    source источник


Ответы (2)


В Corona SDK вы не можете изменить z-индекс напрямую, есть обходной путь.

Вы можете использовать object:toBack() и object:toFront()

local circle = display.newCircle(100,100,30)
circle:setFillColor(0,0,0)
local hunter = display.newSprite(imageSheet,createAnimationSequence("Hunter",5))

circle:toFront()
hunter:toFront()

Но будьте осторожны на object:toBack(), это может привести к перемещению объекта за фон (если есть), лучше использовать его на display.newGroup()

person NaviRamyle    schedule 08.07.2013

вы можете напрямую поместить свой круг за группу, используя индекс

local group = display.newGroup()

local circle = display.newCircle(100,100,30)
circle:setFillColor(0,0,0)
local hunter = display.newSprite(imageSheet,createAnimationSequence("Hunter",5))

group:insert(1,circle)
group:insert(2,hunter)
person DevfaR    schedule 08.07.2013
comment
ваш ответ сработал, но я чувствовал, что работа над другим ответом дала (без создания новой группы) больше, на что я надеялся. в любом случае - большое спасибо за помощь! +1 - person Jordan Brown; 08.07.2013