Skip to content

导出的数据格式说明

eos3tion edited this page Apr 9, 2016 · 5 revisions

导出的数据如下所示(下列数据为了看起来方便,进行过格式化)

[
	[
		[334, 334, 0, 0],  // 索引0的图片数据
		[79, 28, 334, 0],  // 索引1的图片数据
		[79, 28, 334, 28], // 索引2的图片数据
		[79, 28, 334, 56], // 索引3的图片数据 
		[79, 28, 334, 84]  // 索引4的图片数据
	], 
	{
		"3" : [
				["ui.btn.Btn1"], //控件的类名字数组
				[
					[//索引0的控件数据,既ui.btn.Btn1的数据
						0, 
						[0, [0, 0, 0, 79, 28, 0], 1], 
						[0, [0, 0, 0, 79, 28, 0], 2], 
						[0, [0, 0, 0, 79, 28, 0], 3], 
						[0, [0, 0, 0, 79, 28, 0], 4]
					]					
				],
					[
						[0, 0, 334, 334]//索引0的控件,原始尺寸数据,[0] x,[1] y,[2] witdh,[3] height
					]
			]
	}
]

此示例为samples/sample1/lib.fla执行脚本后导出的数据samples/sample1/skin/lib/s.json格式化后的显示结果
sampl1的快速通道

数据结构

上例中的数组,有两块数据
Root
├[0]: [Array] (图片数据)
│ ├[0]:[Array]
│ ├[1]:[Array]
│ ├[2]:[Array]
│ ├[3]:[Array]
│ └[4]:[Array]
└[1]: [Object] (控件数据)
 └"3":[Array]
  ├[0]:[Array]
  └[1]:[Array]

索引0 位图数据

示例中,会生成下图
示例图片
lib.fla导出的元件中,引用到了5张位图
索引0 中的数据均为4个整数的数组,如: ''[79, 28, 334, 0]''
分别代表 [0]位图的宽度(上例中79),[1]位图的高度(上例中28),[2]位图在导出纹理中x的偏移(上例中334),[3]位图在导出纹理中y的偏移(上例中0)

索引1 控件数据

控件数据是Key-Value的形式,
Key代表控件类型,对应常量类 ExportType上例中,控件类型为"3"
Value为控件数据,不同类型的控件,数据的数据结构不同

可视对象(Element)的数据结构

控件也好,面板也好,最终都会以可视对象实例(Instance)展示在元件中 所以我定义了一个大的结构, [0]:类型标识ExportType
[1]:通用数据
[2]:类型特有数据
[3]:所在的库 (0:当前库,1:lib库,字符串:对应字符串的库) 示例:
''[0, [0, 0, 0, 79, 28, 0], 1]''

1 通用数据

[0]:如实例(Instance)名称
[1]:在当前容器的相对坐标x
[2]:在当前容器的相对坐标y
[3]:宽度
[4]:高度
[5]:旋转角度
示例:
''[0, 0, 0, 79, 28, 0]''

2 类型特有数据

位图类型/控件类型

如果类型为位图(BitmapInstance)或者是控件(能在控件注册的类型中找到) 则此位为数值类型,记录在位图集合或者控件中的索引号

文本类型

[0]:文本框类型 (0:dynamic, 1:dynamic, 2:input) 不允许使用静态文本框
[1]:字体
[2]:对齐 (0:left,1:center,2:right,3:justify)
[3]:文字颜色
[4]:文字大小
[5]:字间距
[6]:是否加粗
[7]:是否为斜体
[8]:描边数据(数组) 通过判断文本框是否加了GlowFilter,只支持GlowFilter当描边处理,其他Filter不做处理
├[0]:描边颜色
└[1]:描边宽度

容器类型

如果是容器类型,会再按上述规则,包在一个数组中

3 所在的库

0:当前库
1:lib库
字符串:对应字符串的库