按钮自动换行

var palette = (this instanceof Panel) ? panelGlobal : new Window("palette", undefined, undefined, { resizeable: true });

palette.text = "Panel";
palette.orientation = "column";
palette.preferredSize.width = 500;
palette.preferredSize.height = 300;

buttomnum = 24; //按钮数量

//创建30个尺寸50x50的按钮
var btn = new Array();
for (var b = 1; b <= buttomnum; b++) {
    btn[b] = palette.add("button", undefined, undefined);
    btn[b].preferredSize.width = 50;
    btn[b].preferredSize.height = 50;
    btn[b].text = b;
}
var buttomSpace = 10;//按钮间隔 
var btnX = btn[1].preferredSize.width + buttomSpace;//一个按钮摆放宽度 
var btnY = btn[1].preferredSize.height + buttomSpace;//一个按钮摆放高度 

palette.onResizing = palette.onResize = function () {

    var buttonsPerRow = Math.floor(palette.size.width / btnX); //计算界面宽度下一行最多可以放下的按钮数量 

    if (buttonsPerRow > buttomnum) {
        buttonsPerRow = buttomnum;
    }

    // 左边多余间距(用来按钮居中)
    var letfSpace = (palette.size.width - buttonsPerRow * btnX + buttomSpace) / 2

    for (var c = 0; c < buttomnum; c++) {

        if (buttonsPerRow < 2) {
            //判断界面大小,如果宽度小于2个按钮,则按一列排,中间无间隔
            btn[c + 1].location = [0, c * 50];
            btn[c + 1].size.width = palette.size.width;
            btn[c + 1].size.height = 50;

        } else if (buttonsPerRow >= buttomnum) {
            // 如果界面能容纳所有按钮, 则一行排列, 并且无间隔
            palette.size.height = btnY
            btn[c + 1].location = [(palette.size.width / buttonsPerRow) * c, 0];
            btn[c + 1].size.height = 50;
            btn[c + 1].size.width = (palette.size.width / buttonsPerRow);

        } else {
            // 如果界面宽度大于2个按钮,则按上述排列,按钮大小50x50
            for (var b = 1; b <= buttomnum; b++) {
                if ((b * btnX) <= palette.size.width) { //判断一行是否放满 
                    var myBNum = b + (buttonsPerRow * c); //目前要摆放的按钮序号 
                    if (myBNum > buttomnum) {
                        myBNum = buttomnum + 1;
                        break;
                    }
                    btn[myBNum].size.width = btn[myBNum].preferredSize.width;
                    btn[myBNum].location = [btnX * (b - 1) + letfSpace, btnY * c]; //设置按钮位置
                }
            }
        }

    }

};

palette.layout.layout(true);
palette.layout.resize();

if (palette instanceof Window) {
    palette.center(); palette.show();
}

给TA充电
共{{data.count}}人
人已充电
AE开发编程脚本开发

ScriptUI垂直居中CheckBox的四种方法

2021-7-14 23:15:59

AE开发编程脚本开发

PSR重置

2021-7-14 23:18:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索