使用数组用于图像

时间:2012-11-14 12:38:15

标签: iphone objective-c xcode

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

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

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))
    {

    }
}

虽然此代码不起作用。

还有其他方法吗?

3 个答案:

答案 0 :(得分:1)

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

UIImage没有框架属性。 添加UIImageViews代替UIImage

并改变代码:

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

    }
}

答案 1 :(得分: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];

初始化期间给出的容量不需要是确切的数字,也不是最大的对象数。当数字匹配或仅略微高于数组中实际最大对象数时,它只是一个(次要的)性能增益。

答案 2 :(得分:0)

试试这个

if ([platforms containsObject:@"platforms1"]) {
NSLog(@"the object selection is contained in array");
}
else{
NSLog(@"not contain");
}