Objective c 当x coö时停止Ntimer;坐标等于0

Objective c 当x coö时停止Ntimer;坐标等于0,objective-c,nstimer,Objective C,Nstimer,我有以下代码: CharacterMoving = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(CharacterMoving) userInfo:nil repeats:YES]; -(void)CharacterMoving{ Character.center = CGPointMake(Character.center.x - 1, Character.center.y);

我有以下代码:

CharacterMoving = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(CharacterMoving) userInfo:nil repeats:YES];
-(void)CharacterMoving{
    Character.center = CGPointMake(Character.center.x - 1, Character.center.y);
    if (Character.center.x == 0) {
        [Character invalidate];
        [self DifferentVoid];
    }
}

-(void)DifferentMethod{
    //do something here
}
这基本上会启动计时器,并每隔0.01秒运行CharacterMoving方法。这一切都很顺利

那么,我有这个代码:

-(void)CharacterMoving{
    Character.center = CGPointMake(Character.center.x - 1, Character.center.y);
}
这会使角色图像向左移动,并且工作平稳。因此,当图像到达屏幕边缘时,我希望图像停止移动,并运行另一种方法。我尝试使用以下代码执行此操作:

CharacterMoving = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(CharacterMoving) userInfo:nil repeats:YES];
-(void)CharacterMoving{
    Character.center = CGPointMake(Character.center.x - 1, Character.center.y);
    if (Character.center.x == 0) {
        [Character invalidate];
        [self DifferentVoid];
    }
}

-(void)DifferentMethod{
    //do something here
}
不幸的是,这种不同的方法无法运行,图像在到达屏幕边缘时也不会停止移动。提前谢谢你帮了我的忙

编辑: 我找到了这个解决办法。将“==”更改为“您得到了以下结果:

[Character invalidate];
[self DifferentVoid];
因此,一个名为
-differentitmethod
的方法没有运行也就不足为奇了——您没有调用它。此外,您正在将
-invalidate
发送到
Character
,但您启动的计时器(根据前面的代码判断)称为
CharacterMoving


旁白:我发现您还有一个名为
-CharacterMoving
的方法。最好避免对变量和方法使用相同的名称。此外,如果您按照常规操作,您可以帮助自己并避免混淆他人。

在Character.center之后,您可以尝试打印什么是中心,如:NSLog(@“Character center x=%f”,Character.center.x);也许Character.center永远不是0。。你为什么叫[角色失效]?如果要停止计时器,应执行[CharacterMoving invalidate];谢谢你的回复。我添加了NSLog(@“character center x=%f”,Character1.center.x);。x坐标确实减小到0及以下。我改变了[角色无效];使[字符移动无效];不幸的是,我仍然面临着同样的问题。。。为什么是Character1.center.x而不是Character.center.x?我建议你不要在两件不同的事情上使用相同的名字?与NSTimer和void一样,如果您需要帮助,请停止使用大写字母作为实例名称。如果您希望调用方法,那么您应该调用它,我想-->您放置了
[self differentivoid]而不是
[自我差异方法]否?或者这是什么
差异球
?而且
[字符失效]
应该是
[CharacterMoving invalidate]正是我在评论so+1中所说的:3@CladClad哈我先说的!;-)但是+1对你来说也是。