If I have two existing display objects in Corona, lets say do1
and do2
. Assume do1
is drawn first then do2
, so do2
will be on top.
Is there a way to say "put do2
behind do1
" in corona Lua? If yes can you give me an example?
Answer
If do1
and do2
are in a display group they appear in the order you insert them as:
local group = display.newGroup()
group:insert(do1)
group:insert(do2)
Groups are also numerically indexed and the objects are in display order based on the index:
assert(group[1] == do1) -- do1 is on the bottom
assert(group[2] == do2) -- do2 is on the top (front)
If you happen to add your items out of order, you can move another item to the top in a number of ways:
local group = display.newGroup()
group:insert(do2) -- do2 is on the bottom
group:insert(do1) -- do1 is on the top (front)
-- Move do2 to front by re-inserting it - only one instance will exist in group
group:insert(do2)
assert(group[1] == do1) -- do1 is on the bottom
assert(group[2] == do2) -- do2 is on the top (front)
-- Move do2 to the front
do2:toFront()
assert(group[1] == do1) -- do1 is on the bottom
assert(group[2] == do2) -- do2 is on the top (front)
-- Move do2 to the back
do2:toBack()
assert(group[1] == do2) -- do2 is on the bottom
assert(group[2] == do1) -- do1 is on the top (front)
See also toFront() and toBack().
You an only put items in the front or back. As far as I know there's no way to arbitrarily place items. You can however maintain display order in another list and insert them based on that order.
No comments:
Post a Comment