Загрузить координаты из текстового файла в NSMutableArray - PullRequest
0 голосов
/ 07 апреля 2011

Я создаю простой текстовый файл из редактора физики. Он содержит все вершины для моего многоугольника. Поскольку я хочу, чтобы мой многоугольник был текстурированным, я запускаю его с помощью метода триангуляции, расположенного по адресу: https://github.com/asinesio/cocos2d-PRKit/
И мне нужно, чтобы мои данные пришли из NSMutableArray, чтобы он работал.

Физический редактор может экспортировать файлы .plist и .txt, но для простоты я просто хочу получить вершины из файла .txt и превратить их в CGPoints, а затем добавить их в NSMutableArray

Текстовый файл выглядит так:

(53,4011993408203, -44,4011993408203) (74.4011993408203, -38.4011993408203), (-0.598802387714386, 0,598802387714386), (-0,598802387714386, -39.4011993408203), ...

Я думаю, что метод будет:
Загрузите данные из их источника.
Сканируйте данные без скобок и буквенных символов.
Возьмите все данные до запятой и добавьте их в CGPoint (x (1), y (0)).
Затем просканируйте все данные до следующей запятой и вставьте их в CGPoint (x (1), y (1)).
Затем добавьте этот CGPoint в NSMutableArray. Продолжайте сканирование документа, пока все координаты не будут добавлены.

Этот метод может затем использоваться с различными текстовыми файлами для создания простоты. Так далее: Level1ground.txt, Level2ground.txt .. Было бы здорово, если бы я мог запустить его.

Может кто-нибудь помочь мне с этим?
Высоко ценится,
Оливер.

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Это решение предполагает, что вы уже загрузили файл в строку.Вы можете использовать pathForResource: ofType: inDirectory: класса NSBundle для загрузки файла.

NSArray * rawPoints = [@"(53.4011993408203, -44.4011993408203) , (74.4011993408203, -38.4011993408203) , (-0.598802387714386, 0.598802387714386) , (-0.598802387714386, -39.4011993408203)" componentsSeparatedByString:@" , "];
for (NSString * rawPoint in rawPoints) {
    NSString *tmp = [rawPoint stringByReplacingOccurrencesOfString:@"(" withString:@""];
    tmp = [tmp stringByReplacingOccurrencesOfString:@"(" withString:@""];

    NSArray * coordinates = [tmp componentsSeparatedByString:@", "];

    CGPoint point;
    for (NSString * coordinate in coordinates) {
        point = CGPointMake([[coordinates objectAtIndex:0] floatValue],
                            [[coordinates objectAtIndex:1] floatValue]);
    }
    NSLog(@"x:%f, y:%f", point.x, point.y);
}
0 голосов
/ 07 апреля 2011

В этом случае вы, вероятно, захотите использовать экземпляр NSScanner. См. - scanUpToCharactersInSet: и -scanFloat.

...