2014-09-12 1 views
0

Я пытаюсь создать счет, используя CCLabelTTF, чтобы показать оценку на экране. Но я бы отобразил номера прокрутки очков, пока они не достигнут окончательного результата. Я делаю это в методе обновления:Как создать метку с номерами рулонов в cocos2d?

if(currentScore < finalScore) 
    { 
    currentScore ++; 
    [labelScore setString:[NSString stringWithFormat:@"%d", currentScore]]; 
    } 

Это идеальный вариант, когда у меня есть небольшие результаты, но когда у меня есть большое количество, как 10.000 я должен ждать много для просмотра окончательный счет. Как я могу это решить?

+0

* не * использовать CCLabelTTF для строк, которые часто меняются. Каждый раз, когда строка изменяется, создается новая текстура, на нее наносится шрифт, а затем текстура привязана к OpenGL. Это ** медленная ** операция. Вы должны использовать CCLabelBMFont, использовать bmGlyph или Glyph Designer для создания растровых шрифтов. – LearnCocos2D

ответ

0

Обновление метки оценки в методе обновления означает, что ваш ярлык будет обновляться 60 раз в секунду, что может быть немного медленным для больших приращений. Существует два способа решения этой проблемы: либо увеличить значение приращения, т. Е. Увеличивать более чем на 1 для больших чисел или планировать селектор с интервалом, рассчитанным на основе требуемого приращения или того и другого. Определите продолжительность, на которую вы хотите обновить метку оценки, а затем планируйте селектор с соответствующим интервалом, чтобы пользователь подождал столько же времени, независимо от приращения счета. Например: -

float waitDuration = 2.0f; 
float increment = finalScore - currentScore; 
float interval = 2/increment; 
[self schedule:@selector(updateScoreLabel) interval:interval repeat:increment delay:0]; 

где

-(void) updateScoreLabel{ 
    [labelScore setString:[NSString stringWithFormat:@"%d", currentScore++]]; 
}