iOS:将CGRectIntersectsRect限制为一个交集?

时间:2012-07-18 09:29:44

标签: iphone objective-c ios sdk cgrect

我使用基本的CGRectIntersectsRect来检测sprite之间的碰撞,如下所示:

if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
    [self playSound];
}

但是,由于staff.frameimgView.frame的框架内持续移动,因此方法playSound会多次触发 - 与精灵相互覆盖的次数相同 - 从playSound方法导致不必要的极端回放。

话虽如此,是否可以将CGRectIntersectsRect方法限制为仅在允许一次碰撞之前进行检测?

1 个答案:

答案 0 :(得分:0)

您可以做的是声明一个BOOL实例变量并使用它仅在每次碰撞时播放一次声音。您的代码将是这样的:

if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
    if (!soundPlayed) {
        soundPlayed = YES;
        [self playSound];
    }
}
else {
    soundPlayed = NO;
}

请告诉我这是否适合您。