所以,在我将动画精灵帧加载到我正在制作的游戏的缓存中之后,我会计算每个动画有多少帧。我这样做是因为在游戏配置中每个动画的持续时间都有一个值,当我创建 CCAnimation 时,延迟属性是 AnimationDuration/FramesAmount。
为了计算每个动画的帧数,我打开 animations.plist 并迭代获取每个键的条目,删除文件名,并将每个帧(作为键)存储在 NSMutableDictionary 中,数量为我通过更新的 NSNumber迭代。问题是我不喜欢如何获取 NSNumber intValue,执行 +1,然后分配另一个 NSNumber 并重新设置键的值。有没有更好的方法来做到这一点?谢谢大家!(比如 .. 在 php OR JS 中将是字典 [frame]++)
这是代码:
NSString *finalPath = [path stringByAppendingPathComponent:@"animations.plist"];
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
NSMutableDictionary *conf = [NSMutableDictionary dictionary];
NSDictionary *frames = [plistData valueForKey:@"frames"];
NSNumber *amount;
for( int i=0; i < [frames count]; i++ ) {
NSString *frame = [[frames allKeys] objectAtIndex:i];
NSRange range = [frame rangeOfString:@"/" options:NSBackwardsSearch];
frame = [frame substringToIndex:range.location];
if( [conf objectForKey:frame] == nil )
amount = [[NSNumber alloc] initWithInt:1];
else
amount = [[NSNumber alloc] initWithInt:[[conf objectForKey:frame] intValue]+1];//amount++...
[conf setObject:amount forKey:frame];
}