我目前正在使用SDL2并且对它很新。我正在尝试使用案例陈述来仅在按下鼠标左键时获取鼠标移动坐标。
最后,我需要能够点击一个对象,并找出从所选对象拖动鼠标的程度。
到目前为止,我已经能够让鼠标按下并且鼠标动作分开工作,但不能同时工作。
以下是鼠标按下事件的代码:
void SDL::OnEvent(SDL_Event *_event)
{
Mallet mallet;
switch (_event->type)
{
case SDL_QUIT:
m_running = false;
break;
default:
break;
case SDL_KEYUP:
switch (_event->key.keysym.sym)
{
case SDLK_SPACE:
if(m_playerTurn == 1)
m_playerTurn = 2;
else
m_playerTurn = 1;
std::cout<<"player turn = "<<m_playerTurn<<std::endl;
break;
}
case SDL_MOUSEBUTTONDOWN:
switch(_event->button.button)
{
case SDL_BUTTON_LEFT:
int x = _event->button.x;
int y = _event->button.y;
if(m_playerTurn == 1)
{
bool collision = checkCollision(x, y, m_player1->getTeamMallets(), mallet);
if(collision)
std::cout<<"collision with P1"<<std::endl;
}
if(m_playerTurn == 2)
{
bool collision = checkCollision(x, y, m_player2->getTeamMallets(), mallet);
if(collision)
std::cout<<"collision with P2"<<std::endl;
}
break;
}
}
}
任何人都可以提供帮助。
非常感谢提前。
威尔
答案 0 :(得分:0)
on SDL_MOUSEBUTTONDOWN
set variable click = true ans save x,y coordinates,
在SDL_MOUSEMOTION
上检查是否单击== true并更新x,y坐标,
在SDL_MOUSEBUTTONUP
设置click = false并计算距离。