2011-11-25 4 views
1

나는 매초마다 내 andengine 씬에 스프라이트를 추가하는이 메서드를 만들었습니다. 내가 원하는 무엇AndEngine에서 TimerHandler 지연을 변경하는 방법은 무엇입니까?

private void createSpriteSpawnTimeHandler(){ 
     TimerHandler spriteTimerHandler; 
     float mEffectSpawnDelay = 1f; 
     spriteTimerHandler = new TimerHandler(mEffectSpawnDelay,true,new ITimerCallback(){ 
     @Override 
     public void onTimePassed(TimerHandler pTimerHandler) { 
       addFace(); 
     } 
     }); 
     getEngine().registerUpdateHandler(spriteTimerHandler); 
} 

예를

if(x <= b){ 

mEffectSpawnDelay = mEffectSpawnDely - .2f; 
} 

전으로 실행하고 문제는 변수가 변경 될 때이다위한 것이다. TimeHandler를 업데이트하여 mEffectSpawnDelay 변수를 변경하는 방법을 알 수는 없습니다.

제안 사항?

+0

에 당신은 그것을 당신이 원하는 방식으로 할 수 없습니다. 필요한 것은 생성 지연이 변경되었다는 것을 TimerHandler에게 알려주는 방법입니다. 이 작업을 수행 할 수있는 메소드가 있는지 여부를 API에서 확인해야합니다. –

답변

11

방금 ​​this class을 생성했습니다. 나는 그것이 효과가 있다고 생각하고, 원하는대로 틱 사이의 간격을 변경할 수 있습니다. (일부 작은 수정을해야 할 수도 있습니다, 그래서 그것을 테스트하지만 IMO 잘 보이는하지 않았습니다..)

가 이런 식으로 사용 : 당신이 이제까지 간격을 변경하려면

Timer timer = new Timer(interval, new Timer.ITimerCallback() { 
    public void onTick() { 
     //Your code to execute each interval. 
    } 
} 
(Engine object here).registerUpdateHandler(timer); 

을, 당신은 타이머에 대한 참조를 유지해야합니다. 어쨌든, 간격 사용을 변경하려면 :

timer.setInterval(newInterval); 
+0

Nicee ... 내가하고 싶은 일을 구현하는 방법에 대한 답을 편집 해 주시겠습니까? 고마워요. –

+0

kk 일일 편집 지침. – Jong

+0

와우 우수! 정말 고마워요! –

3

핸들러를 인스턴스 변수에 저장하고 필요할 때 setTimerSeconds 메서드를 호출하십시오.

+0

코드 예제를 제공해 주시겠습니까? –

+0

TimeHandler에는 setTimerSeconds 메서드가 없습니다. – C0deAttack

+0

여기에는 http://code.google.com/p/andengine/source/browse/src/org/anddev/andengine/engine/handler/timer/TimerHandler.java?spec=svn122487e74fa1fdad6cb79d4cbc9e22faf7b6f6ca&r=122487e74fa1fdad6cb79d4cbc9e22faf7b6f6ca가 있습니다. –

1

여기 TimerHandler 소스 파일에서 상대 : http://code.google.com/p/andengine/source/browse/src/org/anddev/andengine/entity/handler/timer/TimerHandler.java?r=30ba07312ed7d4636077b835ba15f772e3f30db7

당신은 간격을 업데이트하는 방법이없는 것을 확인할 수 있습니다. 변수 mTimerSeconds도 최종 결정입니다.

나는 내 자신의 IUpdateHandler 클래스를 구현하고 최종적으로 mTimerSeconds을 추가하고이를 업데이트하는 방법을 추가합니다.

기존 TimerHandler를 복사 한 다음 적절히 변경하십시오.

0

재정 onCreateEngine 방법을 새로운 FixedStepEngine

@Override 
public Engine onCreateEngine(EngineOptions pEngineOptions) { 

    return new FixedStepEngine(pEngineOptions, 30); 
} 
관련 문제