2014-10-08 6 views
1

각 적 유형의 enemyManager 및 enemyManager arrayList 클래스가 있습니다. 나는 스크린에서 약간 벗어난 스폰 지점에서 무작위로 산란하는 적들을 각각 화면에 쳐다 본 다음 상대방에서 떨어져 죽어 가고 무작위로 반응합니다. 문제는 루프를 사용하여 많은 객체를 같은 위치에 스폰하거나 서로를 따라 잡아서 같은 시간에 죽이고 다시 생성하는 경우입니다. 나는 그들 사이에 지체가 있기를 원합니다.enemyManager가 적을 스폰 할 때까지 기다리는 것이 필요합니다.

내가 찾고있는 것은 자바에서 반복되는 적의 산란을 늦추는 방법입니다. 타이머로 적 관리자 클래스를 확장 해 보았고 스폰 함수의 이름을 지정했지만 작동하지 않았습니다.

또한 멀티 쓰레딩도 아닙니다. 아직 설정하지 않은 채로이 프로젝트를 끝내려고했기 때문에 멀티 스레딩이 아닙니다. 그렇다면 최상의 솔루션 인 것 같아요.

제안에 감사드립니다. 업데이트

.....

다음
class spawnLgCars extends TimerTask { 
    public void run() { 
     if (lgCars.size() < 10) { 
      lgCars.add(new LgCar()); 
      System.out.println("spawned"); 
     } else if (lgCars.size() > 10) { 
      lgCars.get(0); 
     } 
    } 

} 

내가 TimerTask를 구현하는 것이 아니라 그것의 자신의 클래스에 있어야했기 때문에이 인스턴스의 속성에 액세스하지 않았다 싶습니다 어떻게 내가 사용한 lgCars 중. 그런 다음 Timer Task에 의해 확장 된 lgCars를 추가하고 생성자에서 작업을 호출하려고 시도했지만이 방법도 작동하지 않았습니다. 왜 그런지 모르겠다.

+0

'Thread.sleep'? –

+0

"그러나 이것은 작동하지 않았습니다."우리에게 조금 알려줍니다. 사실, 나는 당신의 현재 문제를 일으키는 것이 무엇인지 알아 내려고 애쓰는 데 많은 어려움을 겪고 있습니다. 배경, 세부 정보 및 관련 코드를 더 제공하십시오. 어떤 GUI 라이브러리를 사용하고 있습니까? 스윙의 경우, 지연을 위해 스윙 타이머를 사용하십시오. 그렇지 않은 경우 java.util.Timer 또는 스케줄 된 실행 프로그램 서비스. 그리고 네, 아마도 스레딩을 읽을 시간입니다. –

+0

나는 Thread.sleep을 시도했지만 작동하지 않았다. 그것은 적 매니저에서 산란하는 것이 아니라 내 전체 프로그램을 멈추게했다. 나는 스윙과 awt를 사용하고 있습니다. 내가 추가 한 대부분은 다양한 자습서에서 발견되었습니다. 이것은 자바에서 처음으로 GUI를 구현 한 것입니다. 스윙 타이머를 사용하여 모든 것을 다시 페인트합니다. 적을 산란하기 위해 다른 것을 사용할 수 있는지 확신 할 수 없습니까? 아래에 TimerTask를 구현하는 방법을 게시하고 그 기능과 작동하지 않는 이유를 설명합니다. 둘 다 고마워. –

답변

0

TimerTask 및 java.util.Timer는 Swing 이벤트 스레드에서 반복 코드를 실행하도록 설정되지 않았기 때문에 작동하지 않으므로 Swing GUI로 피해야합니다. Timer의 ActionListener에서 호출되는 모든 코드는 Swing 이벤트 스레드에서 호출되므로 Swing Timer를 다시 사용해야합니다.

반면에 이미지 분석을하고 싶거나 실행하는 데 시간이 오래 걸리는 경우와 같이 장기 실행 작업이있는 경우에는 다음과 같이 백그라운드 스레드에서 호출해야합니다. SwingWorker.