尝试使用if语句设置sprite文件名,然后根据该字符串加载正确的文件。看起来我的变量范围存在问题,但我不知道它是什么。
这是我的代码:
if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
NSString *highScoreLabelText = @"label-new-high-score.png"
} else {
NSString *highScoreLabelText = @"label-high-score.png"
}
CCSprite *highScoreLabel = [CCSprite spriteWithSpriteFrameName:highScoreLabelText];
[highScoreLabel setAnchorPoint:ccp(0,0)];
[highScoreLabel setPosition:ccp(20, winSize.height * 0.575f)];
[self addChild:highScoreLabel];
XCode正在标记错误,说highScoreLabelText是未声明的标识符,因此不会编译应用程序。我是否需要在NSString中声明其他内容以使其余代码与变量一起使用?
答案 0 :(得分:10)
这是因为您在if
的两个分支中声明了两个单独的内部范围变量。这两个变量都不在其范围之外,因此您会收到错误。
您应该将声明移出if
,如下所示:
NSString *highScoreLabelText;
if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
highScoreLabelText = @"label-new-high-score.png"
} else {
highScoreLabelText = @"label-high-score.png"
}
现在highScoreLabelText
语句可以看到if
。
答案 1 :(得分:3)
在if-else语句
之外声明局部变量