4

我一直在尝试创建一个数组,说明 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 以便它们可以在数组中使用,有吗在数组内部执行此操作的简单方法?

4

4 回答 4

11

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

[NSValue valueWithCGPoint:player.center];

[NSNumber numberWithFloat:player.center.x];
[NSNumber numberWithFloat:player.center.y];
于 2010-06-04T00:17:43.537 回答
7

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

CGPoint point = [(NSValue *)[pointsArray objectAtIndex:i] CGPointValue];
于 2010-06-04T00:54:47.587 回答
0

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

代替:

NSArray *location[3];

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

NSMutableArray *location = [NSMutableArray arrayWithCapacity:3];
于 2010-06-04T00:45:24.820 回答
0

它必须是 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
于 2010-06-04T01:11:28.840 回答