【发布时间】:2015-03-07 18:15:03
【问题描述】:
我有一个显示分数的场景。有多个级别,每个级别都有不同的场景。
我试了这个就知道哪个场景叫乐谱场景了:
为每个场景创建一个 BOOL,并在各自的 didMoveToView 中将它们设置为 YES。
将该 BOOL 值从该场景传输到使用 NSUserDefaults 调用的场景。
使用 if 语句检查哪个是 YES。
但这似乎没有按预期工作。
我有一个 if 语句,它检查不同的 BOOL 值中的哪一个是 YES(因为只有调用该场景的那个应该是,对吧?因为没有调用其他场景,因此它们各自 BOOL 的值是设置为否?)并运行该特定代码以显示分数和高分,如下所示:
if (calledByMED == YES) {
highScoreLabel.text = [NSString stringWithFormat:@"Best %ld", (long) highScoreMED];
//[self highScoreLabel];
NSInteger scoreMED = [prefs integerForKey:@"scoreMED"];
scoreLabel.text = [NSString stringWithFormat:@"SCORE: %ld",(long) scoreMED];
}
else if (calledByE == YES) {
highScoreLabel.text = [NSString stringWithFormat:@"Best %ld", (long) highScoreE];
//[self highScoreLabel];
NSInteger easyScore = [prefs integerForKey:@"scoreE"];
scoreLabel.text = [NSString stringWithFormat:@"%ld",(long) easyScore];
}
但是,它并没有按照应有的方式进行。假设如果我从“E”场景调用乐谱场景,代码应该跳过 calledByMED 对吗?
但是,它没有。它执行 calledByMED 中的代码所说的并跳过 calledByE,即使我已经由 E 调用它。
我在这里错过了什么?
【问题讨论】:
-
如果你有多个场景你应该知道什么场景需要高分?你的高分方法本身就是一个类吗?还有,为什么一开始就有这么多场景?
-
我不太明白你的意思。每个级别都有一个场景。
-
你必须知道什么场景要求高分的唯一原因是高分方法是否在一个类中。是这样吗?
-
不,事实并非如此。那我该怎么做我想做的事
-
如果高分方法在每个场景中,那么只需调用您想要的方法部分。如果你知道什么场景调用了方法,为什么还要有一个 IF 语句?
标签: ios objective-c sprite-kit