Cocos2d 3.0 更新分数

Posted

技术标签:

【中文标题】Cocos2d 3.0 更新分数【英文标题】:Update Score Cocos2d 3.0 【发布时间】:2014-02-12 07:11:41 【问题描述】:

我一直在试图弄清楚如何更新分数。我有一个带有分数的字符串标签,但它没有更新

这是带有假设要更新的分数的标签

score=0;
CCLabelTTF *scorelabel = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"score: %d",score] fontName:@"Verdana-Bold" fontSize:18.0f];
scorelabel.positionType = CCPositionTypeNormalized;
scorelabel.color = [CCColor blackColor];
scorelabel.position = ccp(0.85f, 0.95f); // Top Right of screen
[self addChild:scorelabel];

那么这就是在两个精灵碰撞后添加分数的地方

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair monsterCollision:(CCNode *)monster projectileCollision:(CCNode *)projectile 
//Creating another sprite on the position the monster one was.
CCSprite *explosion = [CCSprite spriteWithImageNamed:@"explosion.png"];
explosion.position = monster.position;
[self addChild:explosion];
[[OALSimpleAudio sharedInstance] playEffect:@"exsound.mp3"];

CCActionDelay *delay = [CCActionDelay actionWithDuration:.0f];
CCActionFadeOut *fade = [CCActionFadeOut actionWithDuration:.4f];
[explosion runAction:[CCActionSequence actionWithArray:@[delay,fade]]];

[monster removeFromParent];
[projectile removeFromParent];

score++;

return YES;

并建议我如何更新它,因为在检测到碰撞后 scoreLabel 拒绝更新

谢谢你:D

【问题讨论】:

cclabelttf 在字符串更改时非常慢(慢到每次字符串更改时都会注意到卡顿),对于频繁更新标签,cclabelbmfont 或 cclabelatlas 是更好的选择 【参考方案1】:

你需要更新你更新分数的 scoreLabel。

所以之后,

 score++;

包括

[scorelabel setString:[NSString stringWithFormat:@"score: %d",score]];

【讨论】:

我猜, scorelabel 的范围仅限于您声明它的块。在您使用 scorelabel 的类中,通过在此处声明 @implementation CCLabelTTF* scorelabel 来扩大其范围。还将 CCLabelTTF *scorelabel = [CCLabelTTF.... 替换为 scorelabel = [CCLabelTTF.... 最后 :D 非常感谢你,它不是“可评分”只是 scorelabel,但非常感谢【参考方案2】:

更新分数

@Implement(在最顶部)

CCLabelTTF *scorelabel;

显示分数的标签

score=0;
scorelabel = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"score: %d",score] fontName:@"a2203.ttf" fontSize:18.0f];
scorelabel.positionType = CCPositionTypeNormalized;
scorelabel.color = [CCColor blackColor];
scorelabel.position = ccp(0.85f, 0.95f); // Top Right of screen
[self addChild:scorelabel];

之后

score++;

[scorelabel setString:[NSString stringWithFormat:@"score: %d",score]];

【讨论】:

以上是关于Cocos2d 3.0 更新分数的主要内容,如果未能解决你的问题,请参考以下文章

Sprite 帧动画 Cocos2d 3.0

Cocos2d 3.0 中的 3D Action Effects 发生了啥变化?

cocos2d 3.0 中的 spriteWithSpriteFrameName 等效项?

高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)

Cocos2d 3.0继承自Sprite的类在addChild后出现故障

无法检测到 CCNode 上的触摸 - cocos2d v3.0