我正在为我的游戏制作一个从数字开始倒计时的计时器,我们称之为100。我遵循的是cocos2d最佳实践,因此我没有使用NSTimer。我想做的是,每一秒,我都想改变这个计时器的数字。我可能会找到一种方法来使用一个包含100-0所有数字的精灵表,但我知道有一种方法可以只使用数字0-9和它们的图片。
这是我正在使用的代码,带有相应的-(无效)
[self schedule: @selector(tick:)];
[self schedule: @selector(tick2:) interval:1];
总而言之,我想知道如何让它从100开始倒数,但也想知道如何使这些刻度每秒减少1。
初始化一个将保持倒计时值的整数变量:
int count = 100;
您需要保留一个标签(CCLabelBMFont等)来显示这个计数值。我建议Glyph Designer(或者Hierro,如果你想要免费的话)生成0到9个cocos2D兼容的字体位图,然后你可以在CCLabelBMFont:中使用
CCLabelBMFont* countLabel = [CCLabelBMFont labelWithString:@"0" fntFile:@"myFont.fnt"];
接下来,安排一个每秒触发一次的勾选功能:
[self schedule: @selector(tick:) interval:1];
此tick函数每次调用时都会将计数递减1。此外,添加一个条件,即如果计数达到0,它将自行取消计划:
-void tick:(ccTime) dt
{
count --; // decrement count by 1 each time this function is called
if (count == 0)
[self unschedule: @selector(tick:)];
}
最后,在您的主更新循环中(甚至在递减计数后的tick函数本身中),您可以每次更新并重新绘制带有最新值的标签:
[countLabel setString:[NSString stringWithFormat:@"%i", count]];
一切顺利。