我有以下代码:
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不会运行,并且当图像碰到屏幕边缘时图像不会停止移动。在此先感谢帮助我!
编辑: 我找到了这个解决方案。更改' =='进入'<'解决了这个问题。
答案 0 :(得分:2)
你有这个:
[Character invalidate];
[self DifferentVoid];
因此,名为-DifferentMethod
的方法无法运行也就不足为奇了 - 您还没有调用它。此外,您正在向-invalidate
发送Character
,但您启动的计时器(通过前面的代码判断)称为CharacterMoving
。
旁白:我看到您还有一个名为-CharacterMoving
的方法。避免对变量和方法使用相同的名称是个好主意。此外,如果您遵循正常的Objective-C naming conventions,您将自助并避免让其他人感到困惑。