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