python写的一个生成cocos2dx的plist的小工具
来源:互联网 发布:linux finger 命令 编辑:程序博客网 时间:2024/06/05 13:28
最近研究了一下cocos2dx,想知道大师的杰作和自己的之前的设计差在哪。以后贴出自己的感悟,用来以后回顾。现在先贴出一个python小工具。自己写的,用来生成一个plist文件,因为手写plist文件实在是太麻烦了。
limit : anim.plist只支持format 2 而且 frame的plist也是只支持format2 .
目前写的test()函数是把一个spritesheets分割成为i*j个不同的小frame,同时自动生成的anim必须满足是同一行的属于一个anim动画。
比如三国志曹操传的人物资源就是。
如果想要做其他的改变,比如修改参数啥的,必须要输入大量的参数。很多都是默认的,只是一个模板而已,如果要修改,也是很简单就可以满足你的功能,因为主要的逻辑我以及表达清楚了,详细的看python代码。
参数 图像的宽。图像高。输入文件。等分的hn个,wn个。
import sysdef level_str(s , level) : ret = ""for i in range(level) : ret = ret + "\t"return ret + sdef write(f , s , level) : f.write(level_str(s , level))def print_dir(f , d , level) : write(f , "<dict>\n" , level)tl = level + 1for key in d : val = d[key] write(f , '<key>%s</key>\n' % (key) , tl)if(type(val) == type("a")) :write(f , "<string>%s</string>\n"%(val) , tl)elif (type(val) == type({})) : print_dir(f , val , tl)elif (type(val) == type([])) : print_array(f , val , tl)write(f , "</dict>\n" , level)def print_array(f , a , level) : tl = level + 1write(f , "<array>\n" , level)for val in a :if(type(val) == type("a")) :write(f , "<string>%s</string>\n"%(val) , tl)elif (type(val) == type({})) : print_dir(f , val , tl)elif (type(val) == type([])) :print_array(f , val , tl)write(f , "</array>\n" , level)def print_plist(outfile , root) : with open(outfile , "wb") as f : f.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")f.write("<plist>\n")print_dir(f , root , 1)f.write("</plist>\n")#######################################################################upper is the tools #below is the tool_user######################################################################def generator_frame_directory(w , h , filename , hn , wn) : root = {} ;root["metadata"] = {"format":"2" , "size":"{%d,%d}"%(w,h) , "textureFileName":filename}frameDir = {}root["frames"] = frameDir####generator the frame data ; sw = w / wnsh = h / hnfor i in range(hn) : for j in range(wn) : tmpDir = {} noww = sw * jnowh = sh * itmpDir["frame"] = "{{%d,%d},{%d,%d}}" % (noww , nowh , sw , sh)tmpDir["offset"] = "{0,0}"tmpDir["rotated"] = "0"tmpDir["sourceSize"] = "{%d,%d}" % (sw , sh)frameDir[filename+str(i)+str(j)] = tmpDirprint_plist(filename+".plist" , root)return rootdef generator_animation_directory(filename , hn , wn) : root = {}root["properties"] = {"format":"2" , "spritesheets":[filename+".plist"]}animsDir = {}root["animations"] = animsDirfor i in range(hn) : _animDir = {"loops":"10" , "restoreOriginalFrame":filename+str(i)+"0" , "delayPerUnit":"0.3"}animsDir[filename+".anim"+str(i)] = _animDirframeName = []_animDir["frames"] = frameNamefor j in range(wn) : frameInfo = {"spriteframe":filename + str(i) + str(j) , "delayUnits":"1" , "notification":{}}frameName.append(frameInfo)print_plist(filename+".anim.plist" , root) return rootdef test() : generator_frame_directory(256,256,"knight.png",4,4)generator_animation_directory("knight.png" ,4 ,4)#####main functiontest()
阅读全文
0 0
- python写的一个生成cocos2dx的plist的小工具
- 分享一个用javafx写的cocos2dx命令行小工具
- 一个Python的小工具
- 写一个生成html文档的小工具。
- 写了一个生成api文档的小工具
- 一个用python写的用命令行看糗百的小工具
- python写的本地搜索小工具
- jetty写的一个小工具
- C++写的小工具
- NAntGUI 刚刚写了一个生成 NAnt .build 编译文件的小工具(三)
- NAntGUI 刚刚写了一个生成 NAnt .build 编译文件的小工具(四)
- 用ruby写了一个生成xpcom组件模板的小工具
- 最近写的一个mysql读写分离的,python 小工具:angel mysql proxy
- Java-Swing写的一个定时关机的小工具
- JS_小工具_自己写了一个画像素画的小工具
- 一个倒计时的小工具
- 一个 popupwindow的小工具
- python写的本地搜索小工具0.9
- 数据压缩实验无--jpeg解码
- 【JAVA集合详解】ArrayList
- 线性规划-单纯形算法详解
- lintcode: Insert Delete GetRandom O(1)
- Java web实现原理
- python写的一个生成cocos2dx的plist的小工具
- xshell上传文件到Linux服务器以及下载
- h1,p
- Python学习笔记-数字&字符串
- 【JAVA集合详解】LinkedList
- xshell上传文件到Linux服务器以及下载
- AtCoder Regular Contest 077-C
- Longest Palindromic Substring
- hadoop初级遇到的问题