我从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 ..如果能让它运行的话会很棒。
有人可以帮我解决这个问题吗?
非常赞赏,
奥利弗。
答案 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.