我对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用于修改动画... //
}
答案 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...//
}