cocos2d一种动画的快方法

来源:互联网 发布:画蜡烛图 软件 编辑:程序博客网 时间:2024/04/28 18:34
在一个工程中看到的一段源码,生成动画特别的方便。于是,在我写的游戏工程中几乎所有的动画都运用到了。
@interface CCAnimation (Helper)/*1.属性列表文件包含在工程当中,因此,它也在应用程序的“main bundle”中。这个方法会返回main bundle中的文件的完整路径,也就是我们需要读取的plist文件的完整路径。2.为了读取一个plist文件,我们调用NSArray的arrayWithContentsOfFile方法,然后把plist文件的完整路径传递给它。这样就会把plist文件中的内容初使化成一个数组。(本例中,这个数组就是一系列图片名字的数组)。注意,这个方法可行,是因为我们把根元素设置成了NSArray。如果我们把它设置成NSDictionary的话,那么我们就要用一个NSDictionary去初使化它。具体的方法就是调用 [NSDictionary dictionaryWithContentsOfFile...] 。3.创建一个空的数组来存储这些动画帧。4.从plist文件中循环遍历每一张图片并把它存到一个数组中去。5.为每一张图片创建一个精灵帧,同时把它加到 animFrames数组里面去。6.基于一个精灵帧数组,返回一个CCAnimation对象。*/+ (CCAnimation *)animationFromPlist:(NSString *)animPlist delay:(float)delay;@end@implementation CCAnimation (Helper)+ (CCAnimation *)animationFromPlist:(NSString *)animPlist delay:(float)delay{    NSAssert(animPlist != nil, @"the plist may be empty!");    NSString *plistPath = [[NSBundle mainBundle] pathForResource:animPlist ofType:@"plist"];    //CCLOG(@"plistPath: %@", plistPath);    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistPath];    NSArray *animImages = [dict objectForKey:@"Root"];    CCLOG(@"animImages: %@", animImages);    NSMutableArray *animFrames = [NSMutableArray array];        for (NSString *animImage in animImages) {                CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:animImage];                [animFrames addObject:frame];    }        return [CCAnimation animationWithFrames:animFrames delay:delay];}@end

  把所需的png用texturePacker打包生成一张.pvr.ccz文件,plist文件包含一组动画的图片的列表,plist文件的生成可以用python脚本快速生成,一步到位,大大提高了开发的效率。
  下面是自己写的一段python脚本:
# --- picknames.py ---  import os  filedirs=os.listdir(os.getcwd())  for adir in filedirs:    if os.path.isdir(adir):        filenames=os.listdir(adir)        for filename in filenames:            filenames[filenames.index(filename)]='<string>'+adir+'/'+filename[:]+'</string>\n'          out=open(adir+'.plist','w')        pre='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n<key>Root</key>\n<array>\n'        suffix='</array>\n</dict>\n</plist>\n'        #output result        out.write(pre)        for name in filenames:            if name[0] != '.':                out.write(name)        out.write(suffix)        out.close()

     呵呵,最后再次感谢python的强大!cocos2d的好用!

  本文原发布于键赏乾坤。