动画中的XEvent处理

时间:2013-11-23 12:26:34

标签: animation gcc event-handling keypress xlib

我对Xlib函数的事件处理有一些了解。

我的问题是 - 如何在动画中按键,而不会打扰动画。

到目前为止我的设置是,我在while循环中有一些动画,并希望实现一个修改参数的KeyPress事件。

它看起来像这样

  
    

,而(1){

    XNextEvent(dis,& report);
          switch(report.type){
              案例KeyPress:
                if(XLookupKeysym(& report.xkey,0)== XK_space){
                            //...modify参数a ..//
}}
    //...Some动画,其中参数a用于修改动画... //
}

  

现在,问题是我必须始终按键才能在屏幕上显示动画,否则不会出现任何内容。我尝试了一些多次代码修改,使用KeyRelease等,但我没有clou,真的。

简单地说 - 我需要在没有XNextEvent进程的动画期间挂钩一个键,等待任何事件。但是在我的代码中没有XNextEvent语句,KeyPress事件检查的条件语句不起作用。

我想这正式意味着:

  
    

,而(1){

          if(report.type == KeyPress){
                if(XLookupKeysym(& report.xkey,0)== XK_space){
                            //...modify参数a ..//
}}
    //...Some动画,其中参数a用于修改动画... //
}

  

1 个答案:

答案 0 :(得分:1)

在使用XPending()获取XEvent之前,请先使用XNextEvent()检查XEvents。

XPending()返回事件队列中的事件数,因此修改循环:

   while(1){
     if (XPending(dis) > 0) {
       XNextEvent(dis, &report);
       switch (report.type) {
         case KeyPress:
           if (XLookupKeysym(&report.xkey, 0) == XK_space){
              //...modify parameter a..//
           }
        }
     }
     //...Some animation where parameter a is used to modify animation...//
   }