0

我必须制作一个包含图像的数组,然后检查另一个图像是否与它们发生冲突。

到目前为止,我已经尝试过:

NSMutableArray *platforms = [NSMutableArray array];
[platforms addObject:platform1];
[platforms addObject:platform2];
[platforms addObject:platform3];
[platforms addObject:platform4];
[platforms addObject:platform5];
[platforms addObject:platform6];
[platforms addObject:platform7];
[platforms addObject:platform8];
for (platforms in platforms) << code not working needs to do this for the amount of platforms in the array
{
    if(CGRectIntersectsRect(ball.frame, platforms.frame))
    {

    }
}

虽然这段代码不起作用。

还有其他方法可以做到这一点吗?

4

3 回答 3

1

问题是您的数组由UIImages. 您需要添加UIImageViews以实现此类任务。

没有框架属性UIImage。添加UIImageViews而不是UIImage.

并将代码更改为:

for (UIImageView *imgView in platforms)
{
   if(CGRectIntersectsRect(ball.frame, imgView.frame))
    {

    }
}
于 2012-11-14T12:47:18.030 回答
0
for (id platform in platforms) {
...
}

或使用:

for (id theObject in platforms) {
    if(theObject isKindOfClass[UIImage class]) {
        UIImage *theImage = (UIImage*) theObject; 
       //do something with the image 
    }
}

另外 - 你没有初始化你的数组。采用:

NSMutableArray *platforms = [[NSMutableArray array] initWithCapacity:8];

或者至少:

NSMutableArray *platforms = [[NSMutableArray array] init];

初始化期间为容量提供的 8 不需要是确切的数量,也不需要是对象的最大数量。当数字匹配或仅略高于阵列中的实际最大对象数时,这只是(次要)性能增益。

于 2012-11-14T12:43:14.813 回答
0

试试这个

if ([platforms containsObject:@"platforms1"]) {
NSLog(@"the object selection is contained in array");
}
else{
NSLog(@"not contain");
}
于 2012-11-15T09:17:22.450 回答