将文本文件中的坐标加载到NSMutableArray中

时间:2011-04-07 09:16:41

标签: objective-c xcode ios cocos2d-iphone box2d

我从Physics编辑器生成一个普通的txt文件。它包含我的多边形的所有顶点。因为我希望我的多边形被纹理化,所以我通过位于https://github.com/asinesio/cocos2d-PRKit/的三角测量法运行它 而且我需要将我的数据从NSMutableArray传递到doso才能工作。

物理编辑器可以导出.plist和.txt文件,但为了简单起见,我只想从.txt文件中获取顶点并将它们转换为CGPoints,然后将它们添加到NSMutableArray中

txt文件如下所示:

  

(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 个答案:

答案 0 :(得分:1)

此解决方案假定您已将文件已经编码为字符串。 您可以使用NSBundle类的pathForResource:ofType:inDirectory来加载文件。

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);
}

答案 1 :(得分:0)

在这种情况下,您可能希望使用NSScanner实例。请参阅 - scanUpToCharactersInSet:-scanFloat.