2012-06-24 2 views
0

Я пытаюсь обнаружить событие перемещения мыши и переместить его обратно в середину экрана с помощью метода sf :: RenderWindow pollEvent и определить тип события sf :: Event :: MousePressed. Проблема в том, что когда я обнаруживаю перемещение мыши, мне нужно переместить мышь обратно в середину экрана, и для этого я использую sf :: Mouse :: setPosition, но я думаю (может быть, я ошибаюсь), что сама функция вызывает sf :: Event :: MouseMoved, когда он используется, и испугался создания бесконечного цикла.Движение мыши на С ++ SFML

Exmaple на пути им делать, что: (я знаю, 0, 0 это не середина это просто и exmaple)

while (app.pollEvent(Event)) 
{ 
    if(Event.type == sf::Event::MouseMoved) 
     { 
      sf::Mouse::setPosition(0 , 0)); 
     } 
} 

Извините за мой плохой английский! Спасибо заранее!

+0

Если это дает вам проблемы, просто добавьте проверку, что мышь не находится (0, 0), прежде чем перемещать ее туда. –

+0

Пожалуйста, не двигайте мышь! Это ужасно и не является удобным для пользователя. Серьезно, не делай этого. Вы также не столкнетесь с этой проблемой (потому что я уверен, что функция не предназначена для такого использования). – Paul

+0

Итак, что я должен делать вместо этого? Я хочу проверить каждый кадр на дельту движения мыши, вычитая положение мыши по позиции середины экрана. – UnTraDe

ответ

0

Попробуйте вместо этого использовать app.SetCursorPosition(x, y);.

Кроме того, я бы пропустил проверку событий, так как вы хотите, чтобы курсор заканчивался посередине в конце каждого кадра.

+0

Я проверяю события, потому что я также вращаю камеру, а затем возвращаю мышь в середину экрана. – UnTraDe

+0

Если вы пытаетесь создать камеру FPP (с первого взгляда), я рекомендую вам вместо этого использовать 'sf :: Input' событий мыши. –

+0

Хорошо спасибо! – UnTraDe

Смежные вопросы