2010-06-04 3 views
4

Я пытаюсь создать массив, указав расположение UIImageView в приложении, над которым я работал. То, что я пытаюсь сделать, - это использовать массив, в котором я могу сохранить местоположение моего изображения «игрока», используя его координаты x, y и z. Сценарий я пытаюсь сделать будет выглядетьИспользование CGPoints в NSArray

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

Так что я буду иметь доступ этот массив, чтобы переместить мой «игрок» на экране в «3 измерениях», но я не знаю, как преобразовать значения CGpoint в NSValues, чтобы их можно было использовать в массиве, есть ли простой способ сделать это внутри массива?

ответ

11

Чтобы преобразовать значения с плавающей точкой в ​​объекты, используйте NSNumber. NSValue имеет обертки для таких геометрических типов, как CGPoint. Либо будет работать на вас.

[NSValue valueWithCGPoint:player.center]; 

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

отметить также, что нет addObject метода NSArray (вы не можете добавлять объектов к NSArray после его были создан); вы хотите NSMutableArray.

Вместо:

NSArray *location[3]; 

вы, вероятно, хотите что-то больше похоже:

NSMutableArray *location = [NSMutableArray arrayWithCapacity:3]; 
7

сложению для первого ответа. Когда вам нужно прочитать CGPoint назад от вашего массива, вы можете использовать что-то вроде этого:

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

Есть ли у нее быть NSArray? Почему бы не использовать массив структур?

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

PlayerLocation players[3]; 

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

Или в зависимости от дизайна может иметь больше смысла, чтобы объявить класс Objective-C, который содержит х, у, г координаты, как Ивар и хранить эти объекты в NSArray.

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