2010-12-22 5 views
0

나는 SDL_EventState를 사용하여 특정 이벤트를 사용하거나 사용하지 않도록 설정했습니다. 그러나 일단 어떤 상태로든 on이나 off 상태로 설정하면 프로그램의 다른 부분에서 변경할 수 있습니다. 더 설명하기 위해, 여기 내 루프가있다.SDL_EventState 토글

void game::startLoop() 
{ 
    while(QUIT == false) 
    { 
     getRoomUpdate(); 
     applySurface(-15, 280, zombie_lefthand, buffer); 
     applySurface(455, 280, zombie_righthand, buffer); 

     SDL_Flip(buffer); 

     SDL_WaitEvent(&gameEvent); 
     { 
      switch(gameEvent.type) 
      { 
       case SDL_QUIT: 
       QUIT = true; 
       break; 

       case SDL_KEYUP: 
       switch(gameEvent.key.keysym.sym) 
       { 
        case SDLK_LEFT: 
        if(isTwoWay == true) 
         SDL_EventState(SDL_KEYUP, 1); 
         startLoop(); 
         log("Left key pressed."); 
         SDL_EventState(SDL_KEYUP, 0); 

        case SDLK_RIGHT: 
        if(isTwoWay == true) 
         SDL_EventState(SDL_KEYUP, 1); 
         startLoop(); 
         log("Right key pressed."); 
         SDL_EventState(SDL_KEYUP, 0); 

        case SDLK_UP: 
        if(isTwoWay == false) 
         SDL_EventState(SDL_KEYUP, 1); 
         startLoop(); 
         log("Up key pressed."); 
         SDL_EventState(SDL_KEYUP, 0); 

        default: 
        SDL_EventState(SDL_KEYUP, 0); 
       } 
      } 
     } 
    } 
} 
+0

해당 코드로 무엇을하려고합니까? – genpfault

+0

KEYUP이 특정 시간에만 등록하도록 허용하려고합니다. 지금 우리는 벽을 통해 걷는 것을 가질 수 없습니다. – Lemmons

답변

0

아마도 다른 사람의 코드를 시도한 경우입니다.
효과가 있다면 코드를 자신의 코드 (기능적으로 현명한 코드)로 변환하려고 할 수 있습니다.

행운을 비네!
p.s. SDL_ENABLE 및 SDL_DISABLE을 사용해야한다고 생각합니다.