2013-02-26 5 views
0
var lastRecordedTime:Number = getTimer(); 
while(getTimer()>lastRecordedTime+10000) 
{ 

} 

내 게임을 대기 상태로 만들고 싶습니다. 이런 식의 루프를 사용해야합니까, 아니면 이렇게하는 것이 성능면에서 효율적인가?while 루프를 사용하여 대기 하시겠습니까?

+0

자바에 태그를 추가했지만이 코드는 Java와 비슷하지 않습니다. – rgettman

+0

@rgettman Java는 AS3과 매우 유사하며 while 루프는 Java에서 동일해야합니다. 맞습니까? –

+1

루프는 언어마다 매우 유사 할 수 있습니다. 예를 들어, Java는 while 루프없이 특정 수의 밀리 초를 기다리는'Thread.sleep '을가집니다. – rgettman

답변

6

AS3에서는 이와 같은 방식을 사용하지 마십시오. AS3은 멀티 스레딩을 지원하지 않는다는 점에서 심각한 단점이 있습니다. 타이머가 계속 실행되는 한 프로그램이 완전히 중단되고 사용자가 계속 클릭하면 Windows 7이 깜짝 놀라게됩니다.

이 시도 :

private var m_tmr:Timer = new Timer(10000, 1); 

. 
. 
. 

private function func():void 
{ 
    . 
    . 
    . 
    m_tmr.addEventListener(TimerEvent.TIMER, tick); 
    m_tmr.start(); 
} 

private function tick(pEvent:TimerEvent):void 
{ 
    // pick back up in here 
} 

이에 대한 유일한 것은 당신이 무엇을 '에 따라, 그 동안 이벤트 및 물건의 특정 유형을 무시하는 특별한 로직을 추가해야 할 수도 있습니다 그래서, 비동기라는 것이다 성취하려고 노력한다. 하지만 while 루프를 사용하여 스레드를 잠자기하는 것은 AS3에서 해결되지 않습니다.

+1

답변에 동의하지만 어쩌면 "쓰레기"는 "충돌"대신 단어를 더 잘 선택하는 것입니다.) Flash에서 작성한 코드는 단일 스레드 (새 Actionscript 작업자 제외)이기 때문에 while 루프는 유일한 스레드를 묶고 모든 브라우저가 결국 너무 오랫동안 묶여 있다면 불평을해야합니다. –

관련 문제