2014-01-31 7 views
0

netbeans를 사용하여 Java 애플릿의 트랙을 따라 경주하는 두 개의 캐릭터를 모델링하는 프로그램을 만들려고합니다. 현재 레이싱 로직과 그래픽이 잘 작동하지만 캐릭터가 개별적으로 움직일 때마다 지연을 구현하는 데 문제가 있습니다. Java 지연 메소드가 시스템을 충돌 함

이 지연을 만들려면, 나는 현재이 방법을 쓴 :

public void delay() 
{ 

try 
      { 
      Thread.sleep(500); 
      } 

catch (InterruptedException ie) 
     { 
      ie.printStackTrace(); 
     } 

} 

그러나,이는 애플릿 뷰어를 충돌 너무 많이 지연 할 수있는 프로그램을 발생합니다. 시스템을 지연시키지 않도록 시스템을 지연시키는 방법은 무엇입니까?

답변 해 주셔서 감사합니다.

+0

구성 요소가 AWT 또는 스윙을 기반으로합니까? 어느 쪽이든, EDT (Event Dispatch Thread)를 막지 마십시오. GUI가 그럴 때 멈출 것입니다. 'Thread.sleep (n)'을 호출하는 대신에 태스크를 반복하기 위해 Swing Timer를 구현하거나 장시간 실행되는 태스크를 위해 SwingWorker를 구현하십시오. 자세한 내용은 [동시성의 동시성] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)을 참조하십시오. –

답변

0

지연()을 어떤 스레드에서 호출합니까? UI 스레드? 이 경우 애플릿이 응답하지 않아 앱이 중단 될 수 있습니다. 콜백 함수 접근법을 시도하십시오.