0

我有一个课程,我打算将其重用于具有多个级别的游戏,并且在更新标签文本时遇到问题。基本上,我试图在 15 个级别的游戏中重用这个类。所以最初标签的值是1,然后在级别被清除后它应该增加1,然后用更新的文本重新加载类。这就是我尝试更新标签的方式:

GameScene *stage= [stage node];
[[CCDirector sharedDirector]replaceScene:stage];

//stageNo is an integer that I pass to the label as it's text value. As long as its less that 15, it should go inside that code block.
if(stageNo < 15)
{
    stageNo = stageNo + 1;
    [stage.layer.stageLabel setString:[NSString stringWithFormat:@"%i", StageNo]];
}

这只能工作一次,所以如果标签的默认值为 1,则在重新加载类后它变为 2。之后,它只是停留在 2。所以我的问题是,我如何在类时更新标签文本重新加载以增加 1?

4

2 回答 2

1

在 init() 中将 UILabel 声明与 stringWithFormat 分开。然后它应该可以工作

于 2013-02-11T07:55:11.800 回答
1

似乎这绝对是一个范围问题。根据您的评论,您做了正确的事情并创建了一个名为 stageLabel 的属性。唯一的问题是,当您最初设置它时,您并没有保留它。而不是使用

stageLabel = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"%@", stageNo] fontName:@"Arial" fontSize:18];

你应该使用

self.stageLabel = [[CCLabelTTF alloc] initWithString:[NSString stringWithFormat:@"%@", stageNo] fontName:@"Arial" fontSize:18];
于 2013-02-11T08:07:33.430 回答