Develop in 2005 for my own road to my wow.
XML UI排版实现思考
1.每个UI元素要根据其父元素的既定位置进行对齐偏移,所以在代码逻辑上父元素应在自身导入完备后,再行导入其子元素.(两阶段载入,good solution)
2.由于一个复合元素内的子元素来源不同,继承而来,组合而来,组合继承而来,导致确定子元素最终位置的复杂性.
3.文字的渲染性质与纹理类同,而纹理的Size由脚本数据预指定,文本的Size则在初始化时动态计算决定,设置可变文本在每次文字变化时需再次计算决定,然后这两个类同逻辑应在同一个加载阶段完成,以保证逻辑的协调.
4.a.虚元素的属性的有效性取决于InheritPropertyFrom函数实现.
b.逻辑上,虚元素只能定义元素的样式,大小,对齐偏移,而不能定义具体位置,或具体文本内容.
c.无大小定义的纹理,其大小决定于其所依附的元素.
5.对于虚组合元素,如按钮等,它的所有子元素均为第2层虚元素.
6.对于多重复合继承,依靠严格遵循如上准则,多重组合继承应该在逻辑上自然实现.
虚元素的逻辑定义层次
1.只有样式,没有对齐偏移和Size的虚元素为第1层.
2.有对齐偏移或Size的虚元素定义的虚元素为第2层.
3.组合了其他虚子元素的虚组合元素为第3层,如一个虚的按钮的NormalText元素也是个虚元素,同时NormalText又继承于某个FontString元素.
4.复合的Frame元素为第4层.