Thanks, Caleb!
@Raye, I feel you! I had the exact same thoughts when I first started using Corona (not too long ago haha). But after I have used Corona for about 6 months I now have developed a certain style to follow. For example, modular approach servers me as OOP in a way. I also use “custom” events as mentioned here.
Menus
I don’t use any Scene Manager like Storyboard so each of my game menus is a separate module. Each menu creates its own displayGroup and places all the graphics inside of it. Than it shows all the animation. When it’s time to clean up the menu it starts all the fade out animation and when it’s complete, it simply does container:removeSelf() and c_ontainer = nil_, where container is the menu’s displayGroup.
Pause Overlay
Each object in my game has _timers and _transitions tables to store the respective values. When the game is paused (e. g. back button pressed) I dispatch a “custom” event called “pause”. All the objects are subscribed to this event and they pause all transitions and timers. Resuming the game is a similar process.