2013-07-28 4 views
0

안녕하세요. 게임을 일시 중지하고 있습니다. 나는 거의 작동하지만, 이해할 수없는 몇 가지 오작동이있다.액션 스크립트 3 : 게임 일시 중지

기본적으로 프레임 속도를 일시 중지 한 다음 프레임 속도를 다시 시작하는 코드가 있습니다 (아래). 코드 스 니펫은 개별적으로 올바르게 작동하지만 함께 놓으면 "p"키를 누르면 즉시 두 코드 스 니펫을 순환하여 두 번째 스 니펫을 효과적으로 실행합니다 (추적을 넣으면 두 코드가 모두 실행될 때 실행됨을 보여줍니다. "p"를 한 번 누르십시오.)

그래서 첫 번째 질문과 기본 질문은 어떻게 작동합니까? 게임을 일시 중지하기 위해 "p"를 눌렀을 때 한 코드 스 니펫을 실행하기 만하면 "p"를 다시 눌러 다른 코드 조각을 실행할 수있게됩니다.

내 두 번째 질문은 ... 프레임 속도를 추적 할 때 왜 0 대신 0.01 인지요? 이런 종류의 재미있는 것을 발견했습니다 .... 어쨌든, 여기에 코드가 있습니다. 더 많은 문맥이 필요하면 말해줘.하지만 네가 그렇게 생각하지 않아.

 if (stage.frameRate == 30) 
     { 
      if (keyboardEvent.keyCode == Keyboard.P) 
      { 
       dispatchEvent(new NavigationEvent(NavigationEvent.PAUSEGAME)); 
       stage.frameRate = 0; 
       checkIfPaused = true; 
       trace("pause game"); 
       trace(stage.frameRate); 
      } 
     } 
     if (stage.frameRate == 0.01) 
     { 
      if (keyboardEvent.keyCode == Keyboard.P) 
      { 
       stage.frameRate = 30; 
       dispatchEvent(new NavigationEvent(NavigationEvent.RESUMEGAME)); 
       checkIfPaused = false; 
       trace("resume game"); 
      } 
     } 
+0

될 수 있습니까? 게임에서 멈추려 고하는 것에 대해 더 구체적으로 설명해주십시오. 인기있는 엔진입니까 (Flixel과 같은), Greensock TweenLite/TweenMax, 맞춤형 타이머입니까? ActionScript에는 전역 PAUSE 명령이 없습니다 (적어도 내가 아는 한). 직접 구현해야합니다. 이는 모든 객체가 전역 PAUSE 변수를 추적하거나 TweenEngine을 일시 중지하거나 시간 델타를 0으로 오버라이드하거나 모든 것의 조합을 의미 할 수 있습니다. 추신 : 나는 stage.frameRate 속성으로 시도한 사람을 보지 못했습니다. 나쁜 행동이라고 생각합니다. – bigp

+0

잘 못된 연습이든 아니든, 질문에 대한 내 대답을 본다면 제대로 작동합니다. 게다가 멈추는 방법에 대해 궁금하지 않으려 고했다. 왜 나는 if 문 양쪽을 모두 실행하는지 구체적으로 궁금해했다. 그래서 당신이 말한 것은이 게시물에 대해 조금 외적인 것이다. 하지만 ... 내 이벤트를 주문하기 위해 타이머를 사용하고 있습니다. 그래서 타이머를 어떻게 든 일시 중지하는 것이 더 나은 방법 일지 모르지만 지금은 작동 중입니다 – spaderdabomb

+0

글로벌 fps를 설정하여 일시 중지하는 것이 바람직하지 않을 수있는 한 가지 예는 원하지 않는 다른 작업을 방해 할 수 있다는 것입니다. 애니메이션이 필요한 애니메이션 요소가 포함 된 일시 중지 메뉴 또는 기본 게임 만 일시 중지 된 상태에서 애니메이션 요소 (예 : 커서)가있는 상호 작용해야하는 항목 메뉴 등이 있습니다. – mitim

답변

0

신경 쓰지 마라. 방금 두 번째 스 니펫 대신에 다른 코드를 추가하면 지금은 작동합니다.)하지만 누구나 프레임 속도가 0.01 인 멋진 질문에 대답 할 수 있다면 당신에게 답을 줄 것입니다.

+0

어도비 (adobe) 문서에 따르면 프레임 속도에 대한 유효한 값은 0.01에서 1000 사이로 제한됩니다. http://help.adobe.com/ko_KR /FlashPlatform/reference/actionscript/3/flash/display/Stage.html#frameRate 그러나 0 fps를 기술적으로 갖는다면 swf가 멈추는 지 궁금하다. 실행하려는 프레임에 코드가 있고 0 fps는 프레임이 실행되고 있지 않다는 것을 의미한다고하면 코드가 실행되지 않겠습니까? = b – mitim

+0

그것이 정확히 0 일 수없는 이유는 내 추측이었습니다. = p – spaderdabomb