我有两层控制层,其中包含用于得分的 CCLabelTTF,第一层用于检测我的对象的碰撞。我想从我的第一层更新控制层中的分数(即 CCLabelTTF 值)。
这是我的代码...
我的场景.m
-(id)init{
self=[super init];
FirstLayer *fl=[FirstLayer node];
[self addChild:fl];
controlLayer *cl=[controlLayer node];
[self addChild:cl z:3 tag:1];
return self;
}
控制层.h
@interface controlLayer : CCLayer{
CCLabelTTF * score ;
int score_value;
}
@property(nonatomic,retain)CCLabelTTF * score ;
@property int score_value;
-(void)displayScore;
@end
控制层.m
-(id)init{
// my code..
[self displayScore];
}
return self;
}
-(void)displayScore{
CGSize screenSize=[[CCDirector sharedDirector]winSize];
CCLabelTTF * score_lbl = [CCLabelTTF labelWithString:@"Score" fontName:@"Arial" fontSize:16.0];
score_lbl.position=ccp(screenSize.width*0.10,screenSize.height*0.90);
[self addChild:score_lbl z:99];
score =[CCLabelTTF labelWithString:[NSString stringWithFormat:@"test:%d",score_value] fontName:@"Arial" fontSize:16.0] ;
NSString *str = [score string];
NSLog(@"SCORE control:%@",str);
score.position=ccp(screenSize.width*0.20,screenSize.height*0.90);
[self addChild:score];
}
第一层.h
@interface FirstLayer : CCLayer
{
controlLayer *cl;
}
@property(nonatomic,retain)controlLayer *cl;
@end
第一层.m
@implementation FirstLayer
@synthesize cl;
-(id)init{
---
cl=[controlLayer new];
[self schedule:@selector(tick:)];
return self;
}
-(void)tick:(ccTime)dt{
bool blockFound=false;
world->Step(dt, 10, 10);
std::vector<MyContact>::iterator pos;
for(pos = _contactListener->_contacts.begin();
pos != _contactListener->_contacts.end(); ++pos) {
MyContact contact = *pos;
b2Body *bodyA = contact.fixtureA->GetBody();
b2Body *bodyB = contact.fixtureB->GetBody();
if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) {
CCSprite *spriteA = (CCSprite *) bodyA->GetUserData();
CCSprite *spriteB = (CCSprite *) bodyB->GetUserData();
// Sprite A = ball, Sprite B = Block
if (spriteA.tag == 1 && spriteB.tag == 2) {
cl.score_value=cl.score_value+5;
[cl.score setString:[NSString stringWithFormat:@"%d",cl.score_value]];
NSString *str = [cl.score string];
NSLog(@"SCORE in GAME:%@",str);
// [cl displayScore];
if (std::find(toDestroy.begin(), toDestroy.end(), bodyB)
== toDestroy.end()) {
toDestroy.push_back(bodyB);
}
}
// Sprite B = block, Sprite A = ball
else if (spriteA.tag == 2 && spriteB.tag == 1) {
cl.score_value=cl.score_value+5;
[cl.score setString:[NSString stringWithFormat:@"%d",cl.score_value]];
NSString *str = [cl.score string];
NSLog(@"SCORE in GAME:%@",str);
// [cl displayScore];
}
}
}
出了什么问题?,我总是得到分数:测试 0 !:(