Ios 如何激活和停用计时器?

Ios 如何激活和停用计时器?,ios,objective-c,timer,Ios,Objective C,Timer,所以我试图为图像创建一个固定的运动,但我似乎无法使它正常工作。第一个块由计时器激活,但我不知道如何关闭它并激活另一个计时器以继续曲线 BMR = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(BallArchR) userInfo:nil repeats:YES]; LMR = [NSTimer scheduledTimerWithTimeInterval:0.01 targ

所以我试图为图像创建一个固定的运动,但我似乎无法使它正常工作。第一个块由计时器激活,但我不知道如何关闭它并激活另一个计时器以继续曲线

    BMR = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(BallArchR) userInfo:nil repeats:YES];
    LMR = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(BallArchL) userInfo:nil repeats:YES];


    -(void)BallArchR{
        if (Ball.center.x < 284){
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y - 2 );
        }
        if (Ball.center.x >= 284 && Ball.center.x < 488) {
    Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y + 2 );
        }
    }

    -(void)BallArchL{
        if (Ball.center.x > 284){
            Ball.center = CGPointMake(Ball.center.x - 50 , Ball.center.y - 50 );
        }
        if (Ball.center.x <= 284 && Ball.center.x > 80) {
            Ball.center = CGPointMake(Ball.center.x - 2.72 , Ball.center.y + 2 );
        }
    }
BMR=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(BallArchR)userInfo:nil repeats:YES];
LMR=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(BallArchL)userInfo:nil repeats:YES];
-(无效)巴拉彻{
if(球中心x<284){
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y-2);
}
如果(Ball.center.x>=284&&Ball.center.x<488){
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y+2);
}
}
-(无效)巴拉奇{
如果(球中心x>284){
Ball.center=CGPointMake(Ball.center.x-50,Ball.center.y-50);
}
如果(球中心x 80){
Ball.center=CGPointMake(Ball.center.x-2.72,Ball.center.y+2);
}
}
这是使球在曲线中移动的代码,当游戏开始时,BallArchR被激活。但我无法关闭它并激活BallArchL。有没有其他方法可以让这一切顺利进行

- (void)stopTimer 
{
    if ([_LMR isValid]) 
{
        [_LMR invalidate];
    }
}
你可以用这个作为停止计时器

也可用于动画

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
//move your view
[UIView commitAnimations];

你可以用这个作为停止计时器

也可用于动画

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
//move your view
[UIView commitAnimations];

你可以用这个作为停止计时器

也可用于动画

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
//move your view
[UIView commitAnimations];

你可以用这个作为停止计时器

也可用于动画

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
//move your view
[UIView commitAnimations];


我想一个计时器就足够了

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

-(void)BallArchR
 {
        if (Ball.center.x < 284)
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y - 2 );
        }
        if (Ball.center.x >= 284 && Ball.center.x < 488) 
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y + 2 );
        }
        else
        {
             [self BallArchL ];
        }
  }
  -(void)BallArchL
  {
        if (Ball.center.x > 284)
        {
            Ball.center = CGPointMake(Ball.center.x - 50 , Ball.center.y - 50 );
        }
        if (Ball.center.x <= 284 && Ball.center.x > 80)
        {
            Ball.center = CGPointMake(Ball.center.x - 2.72 , Ball.center.y + 2 );
        }
        else
        {
            [BMR invalidate];
        }
  }
BMR=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(BallArchR)userInfo:nil repeats:YES];
-(无效)巴拉彻
{
if(球中心x<284)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y-2);
}
如果(Ball.center.x>=284&&Ball.center.x<488)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y+2);
}
其他的
{
[自平衡];
}
}
-(无效)巴拉奇
{
如果(球中心x>284)
{
Ball.center=CGPointMake(Ball.center.x-50,Ball.center.y-50);
}
如果(球中心x 80)
{
Ball.center=CGPointMake(Ball.center.x-2.72,Ball.center.y+2);
}
其他的
{
[BMR失效];
}
}

我的回答是基于我的理解,如果不是你想要的,请在这里清楚地评论你的要求…;)

我想一个计时器就足够了

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

-(void)BallArchR
 {
        if (Ball.center.x < 284)
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y - 2 );
        }
        if (Ball.center.x >= 284 && Ball.center.x < 488) 
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y + 2 );
        }
        else
        {
             [self BallArchL ];
        }
  }
  -(void)BallArchL
  {
        if (Ball.center.x > 284)
        {
            Ball.center = CGPointMake(Ball.center.x - 50 , Ball.center.y - 50 );
        }
        if (Ball.center.x <= 284 && Ball.center.x > 80)
        {
            Ball.center = CGPointMake(Ball.center.x - 2.72 , Ball.center.y + 2 );
        }
        else
        {
            [BMR invalidate];
        }
  }
BMR=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(BallArchR)userInfo:nil repeats:YES];
-(无效)巴拉彻
{
if(球中心x<284)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y-2);
}
如果(Ball.center.x>=284&&Ball.center.x<488)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y+2);
}
其他的
{
[自平衡];
}
}
-(无效)巴拉奇
{
如果(球中心x>284)
{
Ball.center=CGPointMake(Ball.center.x-50,Ball.center.y-50);
}
如果(球中心x 80)
{
Ball.center=CGPointMake(Ball.center.x-2.72,Ball.center.y+2);
}
其他的
{
[BMR失效];
}
}

我的回答是基于我的理解,如果不是你想要的,请在这里清楚地评论你的要求…;)

我想一个计时器就足够了

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

-(void)BallArchR
 {
        if (Ball.center.x < 284)
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y - 2 );
        }
        if (Ball.center.x >= 284 && Ball.center.x < 488) 
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y + 2 );
        }
        else
        {
             [self BallArchL ];
        }
  }
  -(void)BallArchL
  {
        if (Ball.center.x > 284)
        {
            Ball.center = CGPointMake(Ball.center.x - 50 , Ball.center.y - 50 );
        }
        if (Ball.center.x <= 284 && Ball.center.x > 80)
        {
            Ball.center = CGPointMake(Ball.center.x - 2.72 , Ball.center.y + 2 );
        }
        else
        {
            [BMR invalidate];
        }
  }
BMR=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(BallArchR)userInfo:nil repeats:YES];
-(无效)巴拉彻
{
if(球中心x<284)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y-2);
}
如果(Ball.center.x>=284&&Ball.center.x<488)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y+2);
}
其他的
{
[自平衡];
}
}
-(无效)巴拉奇
{
如果(球中心x>284)
{
Ball.center=CGPointMake(Ball.center.x-50,Ball.center.y-50);
}
如果(球中心x 80)
{
Ball.center=CGPointMake(Ball.center.x-2.72,Ball.center.y+2);
}
其他的
{
[BMR失效];
}
}

我的回答是基于我的理解,如果不是你想要的,请在这里清楚地评论你的要求…;)

我想一个计时器就足够了

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

-(void)BallArchR
 {
        if (Ball.center.x < 284)
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y - 2 );
        }
        if (Ball.center.x >= 284 && Ball.center.x < 488) 
        {
            Ball.center = CGPointMake(Ball.center.x + 2.72 , Ball.center.y + 2 );
        }
        else
        {
             [self BallArchL ];
        }
  }
  -(void)BallArchL
  {
        if (Ball.center.x > 284)
        {
            Ball.center = CGPointMake(Ball.center.x - 50 , Ball.center.y - 50 );
        }
        if (Ball.center.x <= 284 && Ball.center.x > 80)
        {
            Ball.center = CGPointMake(Ball.center.x - 2.72 , Ball.center.y + 2 );
        }
        else
        {
            [BMR invalidate];
        }
  }
BMR=[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(BallArchR)userInfo:nil repeats:YES];
-(无效)巴拉彻
{
if(球中心x<284)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y-2);
}
如果(Ball.center.x>=284&&Ball.center.x<488)
{
Ball.center=CGPointMake(Ball.center.x+2.72,Ball.center.y+2);
}
其他的
{
[自平衡];
}
}
-(无效)巴拉奇
{
如果(球中心x>284)
{
Ball.center=CGPointMake(Ball.center.x-50,Ball.center.y-50);
}
如果(球中心x 80)
{
Ball.center=CGPointMake(Ball.center.x-2.72,Ball.center.y+2);
}
其他的
{
[BMR失效];
}
}

我的回答是基于我的理解,如果不是你想要的,请在这里清楚地评论你的要求…;)

当您需要停用计时器时,首先检查计时器是否有效,然后使用“无效”方法停用

当您需要停用时