2013-05-02 4 views
1

나는 AndEngine을 배우려고하고 있는데, 예제를 가지고 장난하고있다. 내가 수정하는 사람은 PhysicsJumpExampleAndEngine 업데이트

입니다. 내가하고 싶은 것은 X 초마다 무언가를 실행하는 것입니다. 좀 검색을 수행하고 사용자를 추천 발견 :

this.scene.registerUpdateHandler(new IUpdateHandler() { 
@Override 
public void onUpdate(float pSecondsElapsed) { 
     // TODO Auto-generated method stub 
     //Your code to run here! 
} 

을하지만 내가 때문에 아마도이 작업을 수행하지 못할 찾을 :

this.mScene.registerUpdateHandler(this.mPhysicsWorld); 
나는 모든 X의 초 코드를 실행하는 방법에 대한 갈 것이라고 어떻게

? 당신이 당신의 장면에서 당신은 타이머가 종료 될 때 실행하고자하는 코드를 구현하는 방법을 쓰기 다음

protected Scene onCreateScene() { 
    Scene myScene = new Scene(); // somewhere you create your scene 
    float xSeconds = 5.5f; // meaning 5 and a half second 
    boolean repeat = true; // true to reset the timer after the time passed and execute again 
    TimerHandler myTimer = new TimerHandler(xSeconds, repeat, new ITimerCallback() { 
     public void onTimePassed(TimerHandler pTimerHandler) { 
      methodWithStuffToDo(); 
     } 
    }); 
    myScene.registerUpdateHandler(myTimer); // here you register the timerhandler to your scene 

    .... // some other stuff 
    return myScene; 
} 

: 사전

답변

4

에서

덕분에이 같은 타이머 핸들러를 등록 할 수 있습니다

public void methodWithStuffToDo(){ ... } 

설명 :

TimerHandler 것 업데이트 스레드의 onUpdate 메서드에서 확인하십시오. 표시된 시간 (여기 5.5 초)에 가까울 때 onTimePassed 메서드가 트리거됩니다. 나는 으로 끝난다고 말합니다. 왜냐하면 UpdateThread가 반드시 마지막 밀리 초까지 정확하지 않기 때문입니다. 이것은 기본적으로 TimerHandler가 실제로 update 메소드를 처리하고 무엇을 할 것인지를 결정한다는 점에서 코드의 제안과 같습니다 (이는 자신의 UpdateHandler를 만드는 것보다 간단합니다).

+0

미안하지만 나는이 코드를 구현해야하는데, 지금까지 onCreateScene()과 onResumeGame()을 시도했지만 "생성자 TimerHandler (float, boolean, new ITimerCallback() {}) undefined " – Reg

+0

죄송합니다. 코드에 약간의 실수가있었습니다. 나는 그것을 내 활동에서 시험해 보았다. 그리고 이것은 나를 위해 일한다. 실제로 당신은 TimerHandler를 생성하고 원하는 장면, 엔티티 또는 스프라이트에 등록 할 수 있어야합니다. 여기서 나는 그것을 onCreateScene()에 포함 시켰습니다 (그래서 그것은 액티비티 안에 있고, methodWithStuffToDo 또한 액티비티 안에 있고, 핸들러는 씬에 등록됩니다). – GameDroids