views:

197

answers:

4

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 able 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?

+2  A: 

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];
drawnonward
A: 

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];
David Gelhar
A: 

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];
OgreSwamp
A: 

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
progrmr