注:观前提示,gridboxType与数组紧密结合,在观看前请确保你有足够的有关array的知识
上一p介绍了gridboxType的基本理解和简单应用。
(资料图)
根据数组内容(阵营成员)动态变化被列举窗口(国家旗帜,名字等组成的窗口)是gridboxType的一大应用,这次将介绍gridboxType的另一大应用,即批量为相同规格的元件依据数组分配不同的图像
以TNO竖方向议席(托木茨克议会)为例子
素材准备:
预计用正方形方框代表一个议会的席位,不同颜色代表不同的席位支持的party
于是先制作一个长图并且分帧
前端设计:
还是一样构思一下界面,我们预计设置48个席位,依据不同party的支持率分配每个party所占的议席数量
如果不使用gridbox的话就意味着需要写48个icon然后再给每个icon分配不同颜色,这显然是反人类的
回到上一P的“大楼”比喻,这一次我们规定每间房(被列举窗口)只有一个iconType
然后让我们设计这个大楼将会怎么建造:
总共48间房,每层8间房,一共建6层,房间顺序按从上到下标号(add_horizontal = no)
这样子第一间房是第一列第一行,
第二间房是第一列第二行,第七间房(每列最多六间房子)是第二列第一行………以此类推
后端编写:
还记得上一篇讲的dynamic_lists吗
这里列举的数组没有scope的性质,且只作为图片使用的帧数区分,所以填写change_scope = no(可以不填写,默认为不填写)
然后是properties填写的部分,由于每间房对应的门牌号都是独一无二的,使用所列举数组的次序进行区分(array^i),对于第一间房(第一行第一列)而言,它所关联的变量是数组
gridbx_seat_array的第一位,也就是gridbx_seat_array^0(i= 0,数组中首位次序是0)
第二间房(第二行第一列,前面填写过add_horizontal = no,还记得吗),
它所关联的变量是数组gridbx_seat_array的第二位,也就是gridbx_seat_array^1(i= 1)
以此类推
所以,我们只需要改变数组中每个位次的变量的值,就可以让对应的icon更换不同的图像帧
人为地,依据最开始我们准备的素材,我们规定,
变量值= 1,为红party
变量值= 2,为棕party
变量值= 3,为蓝party
变量值= 4,为灰party
然后是依据当前tag的不同支持率,用上述4个值来填充数组
首先将每个party的支持率(以百分数形式),乘以48(席位总数),取整,
可以得到不同party所分配到的席位数量
将每个party分配得的席位数转换为填充进数组时次序
e.g. 红party有10个席位,棕party有12个,那么棕party从第11个开始,到第22个结束
所以,棕party的次序为红party数目,加上棕party数目,其它以此类推
为什么少了灰party的?为了保证总数为48,结束位为48
最后填充数组
以下为完整代码
由于采用的是决议gui,所以你还需要新建一个决议然后引用这个gui
最后进游戏测试
gridbox也终于告一段落了,后续将以parliament-diagram-main提供的样本进行介绍,敬请期待吧