LayaIDE name属性使用

2019-01-28  本文已影响5人  fat___lin

问题:

LayaIDE 属性面板

初学laya,看到IDE 中var、name两个属性的时候挺迷惑的,有一种既生瑜何生亮的感觉。


Laya官方文档描述


dataSource中应用

laya源码

/**
         * <p>数据赋值,通过对UI赋值来控制UI显示逻辑。</p>
         * <p>简单赋值会更改组件的默认属性,使用大括号可以指定组件的任意属性进行赋值。</p>
         * @example
           //默认属性赋值
           dataSource = {label1: "改变了label", checkbox1: true};//(更改了label1的text属性值,更改checkbox1的selected属性)。
           //任意属性赋值
           dataSource = {label2: {text:"改变了label",size:14}, checkbox2: {selected:true,x:10}};
         */
        public function get dataSource():* {
            return _dataSource;
        }
        
        public function set dataSource(value:*):void {
            _dataSource = value;
            for (var prop:String in _dataSource) {
                if (hasOwnProperty(prop) && !(this[prop] is Function)) {
                    this[prop] = _dataSource[prop];
                }
            }
        }

/**@inheritDoc */
        override public function set dataSource(value:*):void {
            _dataSource = value;
            for (var name:String in value) {
                var comp:Component = getChildByName(name) as Component;
                if (comp) comp.dataSource = value[name];
                else if (hasOwnProperty(name) && !(this[name] is Function)) this[name] = value[name];
            }
        }   

容器中应用

laya源码

        /**
         * 初始化单元格信息。
         */
        public function initItems():void {
            if (!_itemRender && getChildByName("item0") != null) {
                repeatX = 1;
                var count:int;
                count = 0;
                for (var i:int = 0; i < 10000; i++) {
                    var cell:Box = getChildByName("item" + i) as Box;
                    if (cell) {
                        addCell(cell);
                        count++;
                        continue;
                    }
                    break;
                }
                repeatY = count;
            }
        }
        /**
         * 初始化项对象们。
         */
        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);
            }
        }

结论:

上一篇下一篇

猜你喜欢

热点阅读