cocos2d一种动画的快方法
来源:互联网 发布:画蜡烛图 软件 编辑:程序博客网 时间:2024/04/28 18:34
在一个工程中看到的一段源码,生成动画特别的方便。于是,在我写的游戏工程中几乎所有的动画都运用到了。
把所需的png用texturePacker打包生成一张.pvr.ccz文件,plist文件包含一组动画的图片的列表,plist文件的生成可以用python脚本快速生成,一步到位,大大提高了开发的效率。
下面是自己写的一段python脚本:
@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的好用!
本文原发布于键赏乾坤。
- cocos2d一种动画的快方法
- COCOS2D-X之帧动画的一种实现Demo
- 实现启动动画的一种方法
- Cocos2d-x动画的实现方法
- [cocos2d] 调用动画方法
- 一种快速刷新richedit中内嵌动画的方法的实现
- 一种常见的IK骨骼动画IK解算方法
- Web页面中实现简单动画的一种方法
- 一种常见的IK骨骼动画IK解算方法
- 主题 : 在cocos2d/cocos2d-x中,一种简单的将sprite变灰的方法
- 另外一种算pi值的方法(更快的收敛)
- cocos2d-x 动作动画方法
- cocos2d-x 自建动画管理器AnimationManager的方法和使用
- cocos2d-x 播放序列动画的两种方法
- cocos2d-x 自建动画管理器AnimationManager的方法和使用
- cocos2d-x 释放场景、动画及UI的方法
- Cocos2d-X 精灵帧动画的实现方法
- cocos2d-x里得到当前动画播放帧数的方法
- c#的委托和事件
- Java 遍历列表的最快方法
- linux之DMA API -- 通用设备的动态DMA映射
- 风的世界里有海的七滴泪水
- 环境配置架构特点
- cocos2d一种动画的快方法
- JAVA获得程序运行时间
- OJ_1001
- JavaScript原型继承的陷阱
- 尕福(散文)
- 简明 Vim 练级攻略
- python文件操作(三)之压缩文件
- 封装
- EXPORT_SYMBOL 与 extern的区别