>>963
えっと、こんな感じです。

void paint{
  メイン描画処理
}
processEvent{
  ショートタイマー{
    repaint();
  }
  決定キー{
  分岐にて各種処理
  ※ここで場合によってfadeout()へ飛ばしています
  }
}
void fadeout(){
  forループで描画処理
}

かなり簡略化して書いてみました。
自分は元々Cから入ったのでついつい関数と呼んでしまうんですが
fedeout()関数の入り口と出口にフラグを立てて決定キーイベント中で判別しても
ループ中に溜まってたボタン連打分がループ抜けしてから一気に押し寄せる感じです。
もちろんループ中にスリープは入れているのですが…