var lastRecordedTime:Number = getTimer();
while(getTimer()>lastRecordedTime+10000)
{
}
내 게임을 대기 상태로 만들고 싶습니다. 이런 식의 루프를 사용해야합니까, 아니면 이렇게하는 것이 성능면에서 효율적인가?while 루프를 사용하여 대기 하시겠습니까?
var lastRecordedTime:Number = getTimer();
while(getTimer()>lastRecordedTime+10000)
{
}
내 게임을 대기 상태로 만들고 싶습니다. 이런 식의 루프를 사용해야합니까, 아니면 이렇게하는 것이 성능면에서 효율적인가?while 루프를 사용하여 대기 하시겠습니까?
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에서 해결되지 않습니다.
답변에 동의하지만 어쩌면 "쓰레기"는 "충돌"대신 단어를 더 잘 선택하는 것입니다.) Flash에서 작성한 코드는 단일 스레드 (새 Actionscript 작업자 제외)이기 때문에 while 루프는 유일한 스레드를 묶고 모든 브라우저가 결국 너무 오랫동안 묶여 있다면 불평을해야합니다. –
자바에 태그를 추가했지만이 코드는 Java와 비슷하지 않습니다. – rgettman
@rgettman Java는 AS3과 매우 유사하며 while 루프는 Java에서 동일해야합니다. 맞습니까? –
루프는 언어마다 매우 유사 할 수 있습니다. 예를 들어, Java는 while 루프없이 특정 수의 밀리 초를 기다리는'Thread.sleep '을가집니다. – rgettman