function state_play(c){ switch(c){ case undefined: print("this is state_play"); return; case 'stop_pressed': state = state_stopped; return false; case 'pause_pressed': state = state_paused; return false; default: return state_normal; } } function state_paused(c){ switch(c){ case undefined: print("this is state_paused"); return; case 'stop_pressed': state = state_stopped; return false; case 'play_pressed': state = state_play; return false; default: return state_normal; } } function state_stopped(c){ switch(c){ case undefined: print("this is state_stopped"); return; case 'play_pressed': state = state_play; return false; default: return state_normal; } } function state_normal(c){ switch(c){ case undefined: print("this is state_normal"); state_stopped(); case 'ff_pressed': state = state_forward; return false; default: return false; } } function state_forward(c){ switch(c){ case undefined: print("this is state_forward"); return; case 'ff_released': state = state_play;return false; default: return false; } } function trans(c){ while(newstate = state(c)){ state = newstate; } state(); } state = state_normal; trans('play_pressed'); trans('ff_pressed'); trans('ff_released'); trans('stop_pressed'); trans('ff_pressed'); trans('ff_released');