Basically this question leads two different answers to my knowledges :
1/ Either, as Tasty did, you use c2 as a level editor & game engine. So each layout is a level and you associate or include your event sheet engines.
Advantages:
- you don't have to create a level editor
- you have an unlimited level of tweaking
Disadvantages:
- creating a level can take a bit more time and you can make mistakes
- maintaining a level is a pain if you want to add new stuff (like a particle fx to makes things cuter) you have to add them on all your level or use the global trick.
2/ Or you use one only game layout, but you create your own level editor.
Advantages:
- creating level is easier as you made the level editor to speed up the process
- you can make dramatic changes in UI or in-game Looks in no time
- you avoid the too-much-layout hell
Disadvantages:
- you have to create your own level editor. Which isn't super hard but need time. The only good thing about that is that if you don't release it publicly you can make crappy UI and just put what you need. You will probably be the only one to know how it works :D
- you have a bit less freedom once you created your data format so you have to think this through:
----what infos do you store?
most of the time: position,angle,scale,opacity and type of object
----how do you store them?
CSV format seems at the moment the only practical way in c2 (no xml parser or binary array loader as far as I know)
----how do you recreate the level?
I usually spawn the same object sprite in which I put different animation according to the "type of object" stored.
If we could access family members by indexes that could simplify this process a bit by not having all objects in one sprite. (thus separating behaviors and instance variables) Would need an ordering feature in the family manager though.
Hope Ashley will think about that (: