BOOL 在更新时的 if 语句中给出不同的结果:(CFTimeInterval)currentTime 方法
BOOL gives different result in if statement at update:(CFTimeInterval)currentTime method
我有两个场景 - DifficultScene
和 GameScene
。在 DifficultScene
中,我有三个按钮 - 简单、中等和困难。我使用一个全局变量 Bool 来跟踪当前的难度级别。当我尝试简单模式时,一切正常,但当我尝试中等或困难时,bool 每秒都在变化,从困难跳到中等和简单,使游戏无法玩。 我的问题是 - 我该如何修复它?这是发生这种情况的代码:
GamesScene.m
-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
extern BOOL isEasyMode;
extern BOOL isMediumMode;
extern BOOL isHardMode;
if ((isEasyMode = YES)) {
NSLog(@"easy");
[self computer];
}
if ((isMediumMode = YES)) {
NSLog(@"medium");
[self computerMedium];
}
if ((isHardMode = YES)) {
NSLog(@"hard");
[self computerHard];
}
[self scoreCount];
}
(如果需要更多代码,我会post)
我认为您的更新方法会根据计时器定期调用,因此如果是这样,它将被连续调用。这就是我认为它发生的原因,另一件重要的事情是你应该使用 ==
进行比较。您正在使用 (isEasyMode = YES)
,这意味着您正在将 YES
分配给 isEasyMode
。
所以将所有 if 语句如 if ((isEasyMode = YES))
替换为 if (isEasyMode == YES)
。
更新:
if语句应该喜欢,
if (isEasyMode == YES) {
NSLog(@"easy");
[self computer];
}
希望这会有所帮助:)
我有两个场景 - DifficultScene
和 GameScene
。在 DifficultScene
中,我有三个按钮 - 简单、中等和困难。我使用一个全局变量 Bool 来跟踪当前的难度级别。当我尝试简单模式时,一切正常,但当我尝试中等或困难时,bool 每秒都在变化,从困难跳到中等和简单,使游戏无法玩。 我的问题是 - 我该如何修复它?这是发生这种情况的代码:
GamesScene.m
-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
extern BOOL isEasyMode;
extern BOOL isMediumMode;
extern BOOL isHardMode;
if ((isEasyMode = YES)) {
NSLog(@"easy");
[self computer];
}
if ((isMediumMode = YES)) {
NSLog(@"medium");
[self computerMedium];
}
if ((isHardMode = YES)) {
NSLog(@"hard");
[self computerHard];
}
[self scoreCount];
}
(如果需要更多代码,我会post)
我认为您的更新方法会根据计时器定期调用,因此如果是这样,它将被连续调用。这就是我认为它发生的原因,另一件重要的事情是你应该使用 ==
进行比较。您正在使用 (isEasyMode = YES)
,这意味着您正在将 YES
分配给 isEasyMode
。
所以将所有 if 语句如 if ((isEasyMode = YES))
替换为 if (isEasyMode == YES)
。
更新:
if语句应该喜欢,
if (isEasyMode == YES) {
NSLog(@"easy");
[self computer];
}
希望这会有所帮助:)