我有一个名为“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”方法来为其设置动画。
如何创建多个“汽车”视图并为其设置动画?
由于
答案 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。只要您等待足够长时间再次点击按钮,您就会看到新车与旧车分开运行。