我必须制作一个包含图像的数组,然后检查另一个图像是否与它们发生碰撞。
到目前为止,我已尝试过:
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))
{
}
}
虽然此代码不起作用。
还有其他方法吗?
答案 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");
}