我做了很多控件,都添加了鼠标响应事件。但发现经常出现鼠标事件不执行的情况。比如有一个按钮,设定鼠标pass以及按下的时候高亮,但是有时候鼠标放上去很久(延迟半秒左右,感觉就是很卡)才会高亮。单击一下,有时候按钮根本不执行相应代码。
void Sprite::dealEvent(BP_Event& e)
{
if (_func != nullptr && isAct)
{
if (hasState(InEdge) > 0)
{
int n = getNum();
_func(e, &n);
LOG(1, "%s%d鼠标到达边沿", _name.c_str(), n);
}
switch (e.type)
{
case SDL_MOUSEBUTTONDOWN:
{
if (e.button.button == SDL_BUTTON_LEFT)
{
……
……
比如这样的代码,在 if (e.button.button == SDL_BUTTON_LEFT)处打上断点,正常情况下会触发。但有时候单击,然后松开左键的同时甩一下鼠标,结果就会发现,那个按钮会一直显示高亮状态,既不执行单击代码,也没有执行鼠标离开后的代码。
void Sprite::dealEvent(BP_Event& e)
{
if (_func != nullptr && isAct)
{
if (hasState(InEdge) > 0)
{
int n = getNum();
_func(e, &n);
LOG(1, "%s%d鼠标到达边沿", _name.c_str(), n);
}
switch (e.type)
{
case SDL_MOUSEBUTTONDOWN:
{
if (e.button.button == SDL_BUTTON_LEFT)
{
……
……
比如这样的代码,在 if (e.button.button == SDL_BUTTON_LEFT)处打上断点,正常情况下会触发。但有时候单击,然后松开左键的同时甩一下鼠标,结果就会发现,那个按钮会一直显示高亮状态,既不执行单击代码,也没有执行鼠标离开后的代码。