Изменение счета в AndEngine динамически Как и в других играх - PullRequest
2 голосов
/ 12 января 2012

Я не знаю точный термин для того, что я ищу.Я разрабатываю игру и показываю очки на другой игровой сцене.Я хочу изменить счет (на самом деле добавить текущий счет в предыдущий счет) таким образом, чтобы изменить один за другим, как в других играх.Например, если предыдущий счет в 10, а текущий - 10, тогда я хочу показать это так со скоростью 10 11 12 13 14 15 ... при добавлении.И когда достигнет 20, звук будет звучать как tiiiinnnnnnnn.Я хочу добавить по одному.Я надеюсь, что я очистил свой вопрос, пожалуйста, предоставьте решение.Спасибо

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Попробуйте это,

Используйте изменяемый текст для вашей цели,

ChangeableText textTime = new ChangeableText(int xPosition, int yPosition, Font mFont, "00");

затем запустите таймер и дайте ему задержку для скорости, которую вы хотите изменить

Теперь предположим, что вы хотите изменить текст с

int x = 10 до int y = 20

    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {

            @Override
            public void run() {
                x++;
                textTime.setText(tm);
                if(x==y) {
                     timer.cancel();
                }
            }

    }, 0, 100); // you can change this delay with your own
1 голос
/ 23 февраля 2012

Еще один способ, который работает для меня.

private TimerHandler timerHandler;
private long startTime = 120000; // 2 minutes for example

private void createTimer() {
    final float period = 1; //one second

    this.getEngine().registerUpdateHandler(timerHandler = new TimerHandler(period, new ITimerCallback() {                      
        public void onTimePassed(final TimerHandler pTimerHandler) {
            timerHandler.reset();

            startTime = (long) (startTime - (period * 1000));
            int seconds = (int) ((startTime / 1000) % 60);
            int minutes = (int) ((startTime / 1000) / 60);
            timerText.setText(String.format("%d:%02d", minutes, seconds));                            
        }
    }));
}
...