一直按住一个键,时间稍长就会使得所有显示都卡顿;我想是同时触发的事件太多的原因,于是加了bool型变量来控制,
if (GetKeyState(VK_SPACE) < 0&&ismybullet==false)//我子弹发射
{
ismybullet = true;
Mybullet *mbu = new Mybullet();
mbu->poi.x = myplane.poi.x + 20;
mbu->poi.y = myplane.poi.y;
mybulletlist.AddTail(mbu);
},
这个if是在计时器控制的,然后我应该把ismybullet = false;加在什么地方呢?
用了双缓冲绘图,子弹显示用了CImageList。
长按一个键时,你应该降低处理频率。比如,对于移动键,就是移动到最边上,最上面,最下面后就不在继续项处理了。对于子弹,长按就是变成你的子弹发送的一个稳定平衡速度,而不是按照按键消息速度。
请你把代码贴完整。我只能大概写给你
private: bool b = false;
OnKeyPress()
{
if (b) return;
b= true;
画图();
b=false;
}