具有不同计时器的同一视图的多个实例

时间:2016-04-30 22:38:35

标签: objective-c

我有一个名为“car”的自定义视图。我使用NSTimer来为之前添加到我的子视图中的“汽车”视图制作动画。

-(void)createRedCar
{
  //-- here I create my first car
  [self.view addSubview:car];

  //-- here I initiate a timer to move the car
  myTimer calls 'moveCar' method
}

然后我可以通过这种方法将汽车移过屏幕

-(void)moveCar
{
car.transform //-- here I move the car across the screen
}

一切都按预期工作。

我在创造“汽车”的新实例时遇到麻烦,并且像我第一次那样制作动画。有什么想法吗?

如果我再次尝试调用“createRedCar”方法,它只会在屏幕上添加一辆新车而不调用“moveCar”方法来为其设置动画。

如何创建多个“汽车”视图并为其设置动画?

由于

1 个答案:

答案 0 :(得分:0)

问题在于'移动'被设置为所有汽车使用的变量。你可以按照以下方式做点什么:

- (void)createCar
{
    UIView *car = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 10)];
    [car setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:car];

    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(moveCarWithTimer:) userInfo:car repeats:YES];
}

- (void)moveCarWithTimer:(NSTimer *)timer
{
    UIView *carToMove = [timer userInfo];
    [carToMove setFrame:(CGRectMake(carToMove.frame.origin.x+1, 0, 40, 10))];
}

根据当前汽车的框架移动框架。我在一个新项目中试过这个,每次点击一个按钮都会调用createCar。只要您等待足够长时间再次点击按钮,您就会看到新车与旧车分开运行。