Animation 动画中的XEvent处理
我对Xlib函数的事件处理有一些理解上的问题 我的问题是-如何在动画中按下一个键,而不干扰动画 到目前为止,我的设置是在while循环中有一些动画,并希望实现修改参数的按键事件 看起来像这样 而(1){Animation 动画中的XEvent处理,animation,gcc,event-handling,keypress,xlib,Animation,Gcc,Event Handling,Keypress,Xlib,我对Xlib函数的事件处理有一些理解上的问题 我的问题是-如何在动画中按下一个键,而不干扰动画 到目前为止,我的设置是在while循环中有一些动画,并希望实现修改参数的按键事件 看起来像这样 而(1){ XNextEvent(显示和报告); 开关(报表类型){ 外壳按键: if(XLookupKeysym(&report.xkey,0)=XK_空间){ //…修改参数a../} //…某些动画,其中参数a用于修改动画…//} 现在的问题是,我必须一直按这个键才能在屏幕上显示动画,否则什么都不会出
XNextEvent(显示和报告);
开关(报表类型){
外壳按键:
if(XLookupKeysym(&report.xkey,0)=XK_空间){
//…修改参数a../
}
//…某些动画,其中参数a用于修改动画…//
} 现在的问题是,我必须一直按这个键才能在屏幕上显示动画,否则什么都不会出现。我尝试过多次代码修改,包括keyrease等,但我真的没有clou 琐碎地说-我需要在动画期间钩住一个关键点,而不需要XNextEvent进程,等待任何事件。但是,如果代码中没有XNextEvent语句,KeyPress事件检查的条件语句就无法工作 我想这在形式上意味着: 而(1){
如果(report.type==KeyPress){
if(XLookupKeysym(&report.xkey,0)=XK_空间){
//…修改参数a../
}
//…某些动画,其中参数a用于修改动画…//
} 在使用
XNextEvent()
获取XEvent之前,请使用XPending()
检查XEvent
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...//
}
正是我想的,每个按键一个事件。非常感谢。