我有两个UIImageViews在superview上像精灵一样移动。每个图像视图都可以自行移动,但是当我同时将两个图像视图放在超视图上时,它们的个别移动变得奇怪地限制在屏幕的两个不同区域。即使编程到相同的坐标,它们也不会触摸。
这是第一个imageView的移动代码:
- (void)viewDidLoad {
[super viewDidLoad];
pos = CGPointMake(14.0, 7.0);
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void) onTimer {
pallone.center = CGPointMake(pallone.center.x+pos.x, pallone.center.y+pos.y);
if(pallone.center.x > 320 || pallone.center.x < 0)
pos.x = -pos.x;
if(pallone.center.y > 480 || pallone.center.y < 0)
pos.y = -pos.y;
}
和第二个imageview:
- (IBAction)spara{
cos = CGPointMake(8.0, 4.0);
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(inTimer) userInfo:nil repeats:YES];
}
- (void)inTimer{
bomba.center = CGPointMake(bomba.center.x+pos.x, bomba.center.y+pos.y);
if(bomba.center.x > 50 || bomba.center.x < 0)
pos.x = -pos.x;
if(bomba.center.y > 480 || bomba.center.y < 0)
pos.y = -pos.y;
}
为什么会导致这种奇怪的行为?
感谢您的帮助。我是新手。
答案 0 :(得分:0)
看起来pos是包含这些方法的类的实例变量。
您的问题是您对两个imageView使用相同的pos.x和pos.y变量。当一个计时器方法更改pallone
的pos.x或pos.y时,它会影响bomba
的移动,反之亦然。
你处理这个的方法是创建一个UIImageView的子类,它包含移动逻辑。每个imageView都会移动自己并保持自己的位置数据。这样,一切都保持分开。