как игнорировать удержание мыши на SDL2?

Проблема:

я хочу изменить анимацию моего персонажа каждый раз, когда щелкают левой кнопкой мыши. Если я удерживаю кнопку, она продолжает менять анимацию, но мне это не нужно. Я хочу, чтобы анимация менялась только один раз. Я пытался сделать что-то вроде этого:

if (csdl_setup->GetMainEvent()->type == SDL_MOUSEBUTTONDOWN) {
        if (csdl_setup->GetMainEvent()->button.button == SDL_BUTTON_LEFT) {
                LeftMouseClicked = true;
        }
    }
    if (LeftMouseClicked == true) {
        LeftMouseClicked = false;
        bob->PlayAnimation(0, 1, 1, 1);
    }

но это не работает. Любые идеи?


person John Stockton    schedule 25.10.2014    source источник


Ответы (1)


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

LeftMouseClicked = false ;    //is set to false every frame

if (csdl_setup->GetMainEvent()->type == SDL_MOUSEBUTTONDOWN) {
    if (csdl_setup->GetMainEvent()->button.button == SDL_BUTTON_LEFT) {
         if( LeftMouseHeld == false ) {
             LeftMouseClicked = true ;
         }
            LeftMouseHeld = true;
    }
}
if (LeftMouseClicked == true) {
    bob->PlayAnimation(0, 1, 1, 1);
}
person 2501    schedule 26.10.2014