当xcoördinate等于0时停止NSTimer

时间:2014-11-20 15:20:08

标签: objective-c nstimer

我有以下代码:

CharacterMoving = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(CharacterMoving) userInfo:nil repeats:YES];

这基本上启动了计时器,并且每0.01秒运行一次CharacterMoving方法。这一切都很顺利。

然后,我有这段代码:

-(void)CharacterMoving{
    Character.center = CGPointMake(Character.center.x - 1, Character.center.y);
}

这使角色图像向左移动,这很顺利。因此,当图像到达屏幕边缘时,我希望图像停止移动,并运行不同的方法。我尝试使用以下代码执行此操作:

-(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
}

不幸的是,DifferentMethod不会运行,并且当图像碰到屏幕边缘时图像不会停止移动。在此先感谢帮助我!

编辑: 我找到了这个解决方案。更改' =='进入'<'解决了这个问题。

1 个答案:

答案 0 :(得分:2)

你有这个:

[Character invalidate];
[self DifferentVoid];

因此,名为-DifferentMethod的方法无法运行也就不足为奇了 - 您还没有调用它。此外,您正在向-invalidate发送Character,但您启动的计时器(通过前面的代码判断)称为CharacterMoving

旁白:我看到您还有一个名为-CharacterMoving的方法。避免对变量和方法使用相同的名称是个好主意。此外,如果您遵循正常的Objective-C naming conventions,您将自助并避免让其他人感到困惑。