Xlibを使用してCプログラムでアニメーション化しようとしていて、イベントが発生したときに何かを実行したいのですが、それ以外の場合はアニメーション化を続けたいと思います。これが私が現在行っていることのサンプルコードスニペットです:
while( 1 )
{
// If an event occurs, stop and do whatever is needed.
// If no event occurs, skip this if statement.
if ( XEventsQueued( display, QueuedAlready ) > 0 )
{
XNextEvent( display, &event )
switch ( event.type )
{
// Don't do anything
case Expose:
while ( event.xexpose.count != 0 )
break;
// Do something, when a button is pressed
case ButtonPress:
...
break;
// Do something, when a key is pressed
case KeyPress:
...
break;
}
}
animate(); // Do animation step i.e. change any drawings...
repaint(); // Paint again with the new changes from animation...
}
したがって、基本的に、ユーザーがマウスをクリックしていないか、キーボードのキーをまだ押していない場合は、ループを続けたいと思います。ユーザーがキーを押すか、マウスをクリックしたときに、停止して特定のアクションを実行したいと思います。上記のコードの問題は、アクションを実行するたびに停止しないことです。ifステートメントを削除すると、イベントが発生するまでアニメーションがブロックされますが、これは望ましくありません。これは単純な問題ですが、私はXlib /アニメーションに少し慣れていないので、助けていただければ幸いです。ありがとう。