【问题标题】:Using CGPoints in an NSArray在 NSArray 中使用 CGPoints
【发布时间】:2010-06-04 00:11:28
【问题描述】:

我一直在尝试创建一个数组来说明 UIImageView 在我一直在开发的应用程序中的位置。我想要做的是通过使用一个数组,我可以使用它的 x、y 和 z 坐标来存储我的“玩家”图像的位置。我要完成的脚本看起来像

NSArray *location[3];
-(IBAction)startup;{
[location addObject: player.center.x];
[location addObject: player.center.y];
[location addObject: playerheight];
}

所以我将能够访问此数组以在屏幕上以“3 维”移动我的“玩家”,但我不知道如何将 CGpoint 值转换为 NSValues 以便它们可以在数组中使用,有没有一种简单的方法可以在数组内部做到这一点?

【问题讨论】:

    标签: cocoa-touch nsarray cgpoint


    【解决方案1】:

    要将浮点值转换为对象,请使用 NSNumber。 NSValue 有 CGPoint 等几何类型的包装器。两者都适合你。

    [NSValue valueWithCGPoint:player.center];
    
    [NSNumber numberWithFloat:player.center.x];
    [NSNumber numberWithFloat:player.center.y];
    

    【讨论】:

      【解决方案2】:

      第一个答案的补充。 当您需要从数组中读取 CGPoint 时,您可以使用类似的东西:

      CGPoint point = [(NSValue *)[pointsArray objectAtIndex:i] CGPointValue];
      

      【讨论】:

        【解决方案3】:

        另请注意,NSArray 没有 addObject 方法(创建后不能将对象添加到 NSArray);你想要NSMutableArray

        代替:

        NSArray *location[3];
        

        你可能想要更多类似的东西:

        NSMutableArray *location = [NSMutableArray arrayWithCapacity:3];
        

        【讨论】:

          【解决方案4】:

          它必须是 NSArray 吗?为什么不使用结构数组?

          typedef struct {
              CGPoint location;
              CGFloat height;
          } PlayerLocation;
          
          PlayerLocation players[3];
          
          players[0].location = player.center;
          players[0].height   = playerheight;
          

          或者根据您的设计,将包含 x、y、z 坐标的 Objective-C 类声明为 ivars 并将这些对象存储到 NSArray 中可能更有意义。

          @interface PlayerLocation : NSObject {
            CGPoint location;
            CGFloat height;
          }
          @end
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多