iPhone:两个UIImageView“Sprites”的奇怪运动

时间:2010-04-03 09:04:56

标签: iphone objective-c uiimageview

我有两个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;
}

为什么会导致这种奇怪的行为?

感谢您的帮助。我是新手。

1 个答案:

答案 0 :(得分:0)

看起来pos是包含这些方法的类的实例变量。

您的问题是您对两个imageView使用相同的pos.x和pos.y变量。当一个计时器方法更改pallone的pos.x或pos.y时,它会影响bomba的移动,反之亦然。

你处理这个的方法是创建一个UIImageView的子类,它包含移动逻辑。每个imageView都会移动自己并保持自己的位置数据。这样,一切都保持分开。