The way I would do it is this:
def begin(self):
while True:
for x in range(0,5):
#state 0 stuff
yield
for x in range(0,3):
#state 1 stuff
yield
for x in range(0,7):
#state 2 stuff
yield
You could also have conditionals that take input that direct it in
different control paths. The point here being, instead of worrying
about using state variables, you could use your location in the loop
as your state. It can make you think of it a lot more as one script,
instead of having to think about it in terms of frames and states.
Just thought I'd share that; it doesn't look like it would require any
changes to Pygame-Fenix, just a new way of using it.
Dan