【未完待续】一个基于AS3的plist库
本文并未全部完成,请耐心等待……
为了在 Sprite Sheet Editor 中加入 plist 格式的 metadata 支持,我在 f60k的as3plist库 基础上进行了修改,实现了我的 as3plist 库。
Plist格式的本质是XML文件。由于AS3内置XML支持,所以这个库的实现还是比较容易的。
Cocos2d-x 中大量使用了plist格式文件 ,因此实现plist的支持非常必要。目前我还没有找到软件能导入 plist+png 格式的 Sprite Sheet。大多数软件都只是能生成该格式。而 Sprite Sheet Editor 只需要稍加修改就能做到这一点。
由于精力有限,项目中的文档并不齐全且可能有错,直接编译 sample 会比较靠谱。
下面是范例代码:
:::actionscript var __olist:Plist10 = new Plist10();
var __parr:PArray = new PArray();
var __pnum:PNumber = new PNumber();
__pnum.object = 3;
var __pstring:PString = new PString();
__pstring.object = "hello";
var __pbool:PBoolean = new PBoolean();
__pbool.object = true;
__parr.addValue(__pnum, __pbool, __pstring);
__parr.addValue(new PArray().addValue(3, 4, 5, 7));
__parr.addValue(new PDict().addValue("name", new PNumber()));
//trace(__parr.toXMLString());
__olist.root = __parr;
//trace(__olist.toString());
var __alist:Plist10 = new Plist10();
__alist.parse(__olist.toString());
trace(__alist.toString());
输出内容:
:::xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<integer>3</integer>
<true/>
<string>hello</string>
<array>
<integer>3</integer>
<integer>4</integer>
<integer>5</integer>
<integer>7</integer>
</array>
<dict>
<key>name</key>
<integer>0</integer>
</dict>
</array>
</plist>
ZwoptexFormat2File 是 Plist10 的子类,它实现了 Zwoptex 软件第二版的文件风格。目前 Cocos2d-x 支持的plist Sprite Sheet格式就是这种格式。
:::actionscript
var __zwoptex2:ZwoptexFormat2File = new ZwoptexFormat2File();
var __frame:ZwoptexFormat2Frame = new ZwoptexFormat2Frame();
__frame.setOffset(0, 0).setRotated(false).setSourceColorRect(0, 0, 100, 100).setSourceSize(100, 100).setFrame(50, 50, 100, 100);
__zwoptex2.setSize(100, 100).setRealTextureFileName("abc.png").setTextureFileName("abc.png").addFrame("test01", __frame);
trace(__zwoptex2.toString());
输出内容:
:::xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>frames</key>
<dict>
<key>test01</key>
<dict>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{100,100}}</string>
<key>sourceSize</key>
<string>{100,100}</string>
<key>frame</key>
<string>{{50,50},{100,100}}</string>
</dict>
</dict>
<key>metadata</key>
<dict>
<key>format</key>
<integer>2</integer>
<key>size</key>
<string>{100,100}</string>
<key>realTextureFileName</key>
<string>abc.png</string>
<key>textureFileName</key>
<string>abc.png</string>
</dict>
</dict>
</plist>
- 文章ID:1982
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/as3plist/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。