开发者

Using CGPoints in an NSArray

开发者 https://www.devze.com 2023-01-02 18:37 出处:网络
I have been trying to create an array stating the location of a UIImageView in an app I\'ve been working on.What I am trying to do is by using an array I can store the location of my \"player\" image

I have been trying to create an array stating the location of a UIImageView in an app I've been working on. What I am trying to do is by using an array I can store the location of my "player" image by using its x,y and z coordinates. The script I am trying to accomplish would look like

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

So I will be ab开发者_StackOverflow社区le to access this array to move my "player" on the screen in "3-dimensions", but I don't know how to convert the CGpoint values to NSValues so they can be used in the array, is there a simple way to do this inside of the array?


To convert floating point values to objects, use NSNumber. NSValue has wrappers for geometric types like CGPoint. Either would work for you.

[NSValue valueWithCGPoint:player.center];

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


To addition for the first answer. When you'll need to read CGPoint back from your array, you can use something like that:

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


Also note that there's no addObject method for NSArray (you can't add objects to an NSArray after its been created); you want NSMutableArray.

Instead of:

NSArray *location[3];

you probably want something more like:

NSMutableArray *location = [NSMutableArray arrayWithCapacity:3];


Does it have to be an NSArray? Why not use an array of structs?

typedef struct {
    CGPoint location;
    CGFloat height;
} PlayerLocation;

PlayerLocation players[3];

players[0].location = player.center;
players[0].height   = playerheight;

Or depending on your design it may make more sense to declare an objective-C class that contains the x,y,z coordinates as ivars and store those objects into an NSArray.

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

精彩评论

暂无评论...
验证码 换一张
取 消