两个图像碰撞的问题

时间:2011-06-28 10:29:47

标签: iphone xcode animation uiimageview collision-detection

这是我的代码:

-(void)collision {
    if(CGRectIntersectsRect(ball.frame,center.frame)) {
        center.alpha=0.1;
    }
}

-(void)viewDidLoad {
    [super viewDidLoad];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:7.0f];
    [ball setCenter:CGPointMake(200, 100)];
    [UIView commitAnimations];
    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(collision) userInfo:nil repeats:YES];
}

我的问题是,当viewDidLoad“center.alpha = 0.1”但“中心”和“球”还没有碰撞时,我不知道为什么,我认为这是由于动画。

2 个答案:

答案 0 :(得分:1)

虽然动画需要7秒钟,但[ball setCenter:CGPointMake(200, 100)];会立即设置,因为- (void)collision可能会在动画中“ball”与“center”相交之前将alpha设置为0.1。

您可以使用NSTimer慢慢更改“球”的中心,而不是UIView动画。

答案 1 :(得分:0)

在viewDidLoad结束处执行该行后0.01秒,您正在安排对冲突的调用。但视图尚未显示,因此显示视图可能需要超过0.01秒。

尝试viewDidAppear

话虽如此,我认为你不清楚iOS中动画的目的。这些不是用于计算碰撞检测 - 它们仅用于在设定时间内从起点移动到终点。我建议你阅读关于动画系统的Ap​​ple文档。