【问题标题】:Cocos2d Accessing CGRect properties of objects in NSMutableArrayCocos2d 访问 NSMutableArray 中对象的 CGRect 属性
【发布时间】:2014-01-18 14:07:31
【问题描述】:

我在自己的类中声明了一堆建筑物。我将这些建筑物的实例添加到我的游戏层以及 NSMutableArray allBuildings 中。所有这些建筑物都有一堆合成并在类文件中声明的 CGRect。 我的问题是如何使用访问 allBuildings 数组中所有建筑物的 CGRects,以用于碰撞而不访问数组中的每个单独的建筑物。?

【问题讨论】:

    标签: objective-c object properties cocos2d-iphone nsmutablearray


    【解决方案1】:

    您可以使用集合运算符@unionOfObjects 来获取所有矩形的数组。它们将存储在NSValue 对象中。例如我假设你的财产被称为rect

    NSArray* rects= [allBuildings valueForKeyPath: @"@unionOfObjects.rect"];
    

    然后你以这种方式遍历数组:

    for(NSValue* value in rects) {
        CGRect rect= value.CGRectValue;
        <...>
    }
    

    【讨论】:

    • 好的,我想我理解了这个概念。这就是我所做的NSArray * verticalArray = [allBuildings valueForKey:@"@unionOfObjects.vertical1"];,其中垂直是矩形。但是当我尝试将它们用于碰撞for (CGRect * vert1 in verticalArray) 它给了我一个错误说CGRect 不是一个有效的对象。
    • 我添加了关于如何遍历矩形数组的说明。
    • 应用程序崩溃并在日志this class is not key value coding-compliant for the key 中出现此错误,尽管我确信我使用了正确的属性并且所有建筑物都具有此属性.. 我想我必须单独检查每个建筑物的碰撞。 . 无论如何感谢您的帮助
    • 我可以看看你是如何填充数组的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多