欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

laya ui 中已经处理了的那些事

程序员文章站 2022-03-02 21:09:37
...
  • 销毁组件时进行事件移除
  • UIGroup 对 ISelect 组件进行选中状态切换
  • List 中支持分页

销毁时进行事件移除

node.as :

        /**
         * <p>销毁此对象。destroy对象默认会把自己从父节点移除,并且清理自身引用关系,等待js自动垃圾回收机制回收。destroy后不能再使用。</p>
         * <p>destroy时会移除自身的事情监听,自身的timer监听,移除子对象及从父节点移除自己。</p>
         * @param destroyChild  (可选)是否同时销毁子节点,若值为true,则销毁子节点,否则不销毁子节点。
         */
        public function destroy(destroyChild:Boolean = true):void {
            _destroyed = true;
            this._parent && this._parent.removeChild(this);
            
            //销毁子节点
            if (_childs) {
                if (destroyChild) destroyChildren();
                else this.removeChildren();
            }
            
            this._childs = null;
            
            this._$P = null;
            
            //移除所有事件监听
            this.offAll();
            
            //移除所有timer
            this.timer.clearAll(this);
        }

对ISelect组件进行选中状态切换

UIGroup.as :

        /**@private */
        protected var _items:Vector.<ISelect>;
        /**@private */
        protected var _selectedIndex:int = -1;

         /**
         * 初始化项对象们。
         */
        public function initItems():void {
            _items || (_items = new Vector.<ISelect>());
            _items.length = 0;
            for (var i:int = 0; i < 10000; i++) {
                var item:ISelect = getChildByName("item" + i) as ISelect;
                if (item == null) break;
                _items.push(item);
                item.selected = (i === _selectedIndex);
                item.clickHandler = Handler.create(this, itemClick, [i], false);
            }
        }
        
        /**
         * @private
         * 项对象的点击事件侦听处理函数。
         * @param index 项索引。
         */
        protected function itemClick(index:int):void {
            selectedIndex = index;
        }


List 中支持分页

List.as :

        /**最大分页数。*/
        public var totalPage:int = 0;
        
        /**
         * 列表的当前页码。
         */
        public function get page():int {
            return _page;
        }
        
        public function set page(value:int):void {
            _page = value
            if (_array) {
                _page = value > 0 ? value : 0;
                _page = _page < totalPage ? _page : totalPage - 1;
                startIndex = _page * repeatX * repeatY;
            }
        }