Egret社区
1银子
group是正常的,list用不了this.target.getElementAt(i),list获取的是null

分享到 :
0 人收藏

2 个回复

倒序浏览
熊猫少女  圆转纯熟 | 2019-8-21 09:55:21
可以上传一个demo吗?
Akito  圆转纯熟 | 2019-8-21 10:00:39
熊猫少女 发表于 2019-8-21 09:55
可以上传一个demo吗?

[mw_shl_code=applescript,true]module uilayout {

    var UIComponentClass = "eui.UIComponent";

    /**自定义的正方形布局类*/
    export class SquareLayout extends eui.LayoutBase {

        private _horizontalGap = 6;
        /**
         * 水平间隔
         */
        public set horizontalGap(gap: number) {
            this._horizontalGap = gap;
        }
        public get horizontalGap() {
            return this._horizontalGap;
        }
        private _verticalGap = 6;
        /**
         * 垂直间隔
         */
        public set verticalGap(gap: number) {
            this._verticalGap = gap;
        }
        public get verticalGap() {
            return this._verticalGap;
        }
        public constructor() {
            super();
        }
        public measure(): void {
            super.measure();
        }
        /**
         * 重写显示列表更新
         */
        public updateDisplayList(unscaledWidth: number, unscaledHeight: number): void {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            if (this.target == null)
                return;
            //子项数量
            var count: number = this.target.numElements;
            //容器子项宽高
            var size: number = 0;
            //最长边个数
            var numMax = 1;
            //最短边个数
            var numMin = 1;
            //获取容器最短边
            var minsize: number = Math.min(unscaledWidth, unscaledHeight);
            //获取容器最长边
            var maxsize: number = Math.max(unscaledWidth, unscaledHeight);
            size = minsize;
            //容器容纳总数量
            var containerSize = 0;
            var i = 0;
            while (containerSize < count) {
                i++;
                //长边除以
                numMax = Math.floor(maxsize / size);
                containerSize = numMax * numMin;
                if (containerSize < count) {
                    size = minsize / i;
                    numMin++;
                } else {
                    break;
                }
            }

            for (var i: number = 0; i < count; i++) {
                var layoutElement: eui.UIComponent = <eui.UIComponent>(this.target.getElementAt(i));
                if (!egret.is(layoutElement, UIComponentClass) || !layoutElement.includeInLayout) {
                    continue;
                }
                //TODO:横竖判断
                var verticalNum = Math.floor(i / numMax);
                var horizontalNum = i - verticalNum * numMax;
                //子项x坐标
                var childX: number = horizontalNum * this._horizontalGap + horizontalNum * size;
                //子项y坐标
                var childY: number = verticalNum * this.verticalGap + verticalNum * size;
                layoutElement.setLayoutBoundsPosition(childX, childY);
                layoutElement.setLayoutBoundsSize(size, size);
            }
            this.target.setContentSize(size, size);
        }

    }
}[/mw_shl_code]

我仿着案例写的自定义布局的代码   var layoutElement: eui.UIComponent = <eui.UIComponent>(this.target.getElementAt(i));这行,如果是eui.List获取的是null
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部