2014-05-11 4 views
0

조건이 충족 될 때 조건 확인을 해제 할 수 있으며 선택한 언어를 사용하여 어떻게 구현할 수 있습니까?조건이 충족되면 조건 확인을 해제 하시겠습니까?

예 :

말 업데이트 함수 내에서 실행되는 경우 문 문이 프로그램의 라이프 사이클에 한 번 진정한 실행할 때 호출 할 수없는 경우 문, 좋아요 것 인. 함수 변수 (자바 스크립트)에 문장을 래핑 한 다음 조건이 true 인 경우 void를 반환하도록 변수를 다시 할당하여이 작업을 수행 할 수 있다고 생각합니다.

void update() { 
    // code 

    if (condition) { 
    // code 
    } 

    // code 
} 

당신이 할 수있는 것은 :

void update() { 
    // code 

    static bool already_ran = false; 
    if (!already_ran && condition) { 
    alreadu_ran = true; 
    // code 
    } 

    // code 
} 

static

는 변수가 유지가 함수 호출 이상 및 C의 값 것을 의미

+3

'while'의 'break'와 같은 조건 범위를 다 떨어지기 만합니까? ??? – herohuyongtao

+0

엄격하게 * if * (*가 아닌 경우에만) *를 의미하는 경우 조건을 검사하는 코드를 제거하면됩니다. *가있는 경우에만 *를 의미하는 경우 조건을 검사할지 여부를 결정할 수 없으므로 먼저 조건을 검사해야합니다. 어떤 시점에서 상태를 확인하지 않으면 너무 늦습니다. – Mankarse

+0

당신은 더 pls 수 있습니까? 시도하고자하는 행동의 예를 시도해보십시오. – bolov

답변

0

확인의 당신이 (C를 ++)가 있다고 가정하자/C++ 논리 연산자 (이 예제에서는 &&)는 단락되어 있습니다. 즉, 필요하지 않으면 두 번째 피연산자를 평가하지 않습니다. 예를 들어 !already_ranfalse이면 condition과 관계없이 전체 표현식이 false이므로 condition은 평가되지 않습니다.

+0

조건이 아직 평가 중입니다. 이 모든 것을 함께 피하기 위해 일부 모국어 기능이나 디자인 패턴이 있기를 바랬습니다. 이유는 update()에 대한 모든 호출 (예 : 초당 30 회)에서 임의의 수의 조건 (심지어 부울은 1000에있을 수 있음)을 실행하는 것보다 더 효율적이라고 생각합니다. – Nate

+0

벤치마킹 후 얼마나 느린 지 확인하십시오 – bolov

+0

하 여전히 매우 빠릅니다 :-) – Nate

0

단순 조건을 사용하여 increaseValue() 함수를 실행하는 것보다 효과적이지만 100 % 확신 할 수는 없지만 여기서 사용하는 코드가 있으며 as3 이상에서 작동하는 것으로 보입니다. 업데이트는 약 30 회 초당 호출됩니다.

public function update(){ 
    if(isHit){ //isHit is part of another condition used by collision 
     increaseValues = function() { 
      this.height += 1; 
      this.width += 1; 
      this.x -= 1; 
      this.y -= 1; 
      this.alpha += -0.1; 
      if (this.alpha == 0){ 
       increaseValues = function(){ 
        return; 
       } 
      } 
     } 
    } 
    increaseValues(); 
}