亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Egret之Tabbar通用頁簽

發布時間:2020-03-03 21:34:04 來源:網絡 閱讀:6712 作者:Aonaufly 欄目:開發技術

目標 : 實現Tabbar也簽的通用。

一 : 美術資源的準備(自己做的 , 很挫 , 勿噴 )如下
Egret之Tabbar通用頁簽

二 : 通用頁簽ItemRenderer的皮膚 如下
Egret之Tabbar通用頁簽

三 :tabbar的測試UI皮膚 如下
Egret之Tabbar通用頁簽

四 :ItemRenderer的實現

module common{
    /**
     * 通用的頁簽CELL
     * @author Husz
     */
    export class common_TabBarCell extends eui.ItemRenderer{
        private img_yes : eui.Image = null;
        private img_no : eui.Image = null;
        private img_txt : eui.Image = null;

        public constructor(){
            super();
            this.skinName = "resource/common_skins/common_TabBarCell.exml";
        }
        protected createChildren():void{
            super.createChildren();
        }
        protected dataChanged() : void{
            let $dataModel : common_TabBarCell_Data = <common_TabBarCell_Data>this.data;
            this.handlerBackGround( $dataModel );
            this.handlerTxt( $dataModel );
        }

        /**
         * 處理背景
         * @param {common.common_TabBarCell_Data} $dataModel
         */
        private handlerBackGround( $dataModel : common_TabBarCell_Data ) : void{
            let $selected : boolean = $dataModel._selected;
            this.img_yes.visible = $selected;
            this.img_no.visible = !$selected;
        }

        /**
         * 處理文本
         * @param {common.common_TabBarCell_Data} $dataModel
         */
        private handlerTxt( $dataModel : common_TabBarCell_Data ) : void{
            let $textPathRes : string = "";
            if($dataModel._selected == true){
                $textPathRes = $dataModel._yes_txt_res;
            }else{
                $textPathRes = $dataModel._no_txt_res;
            }
            this.img_txt.source = RES.getRes($textPathRes);
        }

        /**
         * 是否已經處于選擇的狀態(只讀。。。。。。)
         * @returns {boolean}
         * @constructor
         */
        public get IsSelected() : boolean{
            let $dataModel : common_TabBarCell_Data = <common_TabBarCell_Data>this.data;
            return $dataModel._selected;
        }
    }

    /**
     * 通用的頁簽CELL的數據模型
     * @author Husz
     */
    export interface common_TabBarCell_Data{
        /**數據的下標*/
        _index : number;
        /**是否處于選擇狀態*/
        _selected : boolean;
        /**選擇狀態下的美術文本資源*/
        _yes_txt_res : string;
        /**未選擇狀態下的美術文本資源*/
        _no_txt_res : string;
    }
}

五 : TabBarDemoView UIDemo實現

module app{
    import common_TabBarCell = common.common_TabBarCell;
    import common_TabBarCell_Data = common.common_TabBarCell_Data;
    /**
     * 此UI面板測試通用的Tabbar頁簽Cell
     * @author Husz
     */
    export class TabBarDemoView extends eui.Component implements eui.UIComponent{
        private bar_target : eui.TabBar = null;
        private con_0 : eui.Group = null;
        private con_1 : eui.Group = null;

        private _data2TabBar_arr : Array<common_TabBarCell_Data> = null;
        private _cur_index2TabBar : number = 0;
        private _all_channel : Array<eui.Group> = null;

        public constructor(){
            super();
            this.skinName = "resource/eui_skins/TabBarDemoSkin.exml";
        }

        protected childrenCreated():void{
            super.childrenCreated();
            this._all_channel = [
                this.con_0,
                this.con_1
            ];
            this.handlerListener2Tabber( true );
            this.initView2Tabbar();
        }

        private handlerListener2Tabber( $isAdd : boolean ) : void{
            if( $isAdd ){
                if( !this.bar_target.hasEventListener(eui.ItemTapEvent.ITEM_TAP) )
                    this.bar_target.addEventListener( eui.ItemTapEvent.ITEM_TAP , this.onTabbarItemClick , this  );
            }else{
                if( this.bar_target.hasEventListener(eui.ItemTapEvent.ITEM_TAP) )
                    this.bar_target.removeEventListener( eui.ItemTapEvent.ITEM_TAP , this.onTabbarItemClick , this  );
            }
        }

        /**
         * 處理頁簽切換
         * @param {eui.ItemTapEvent} $e
         */
        private onTabbarItemClick( $e : eui.ItemTapEvent ) : void{
            if( this._cur_index2TabBar != $e.itemIndex ){
                this._cur_index2TabBar = $e.itemIndex;
                let $dataCell : common_TabBarCell_Data = null;
                let $count : number = 0;
                for( let $i : number = 0 , $j :number = this._data2TabBar_arr.length ; $i < $j ; $i ++ ){
                    $dataCell = this._data2TabBar_arr[$i];
                    if( $dataCell._index == this._cur_index2TabBar ){
                        $dataCell._selected = true;
                        $count ++;
                    }else{
                        if( $dataCell._selected != false ){
                            $dataCell._selected = false;
                            $count ++;
                        }
                    }
                    if($count >= 2){
                        break;
                    }
                }
                //切換頻道
                this.channelChange();
                this.bar_target.dataProvider = new eui.ArrayCollection( this._data2TabBar_arr );
            }
        }

        /**
         * 初始化頁簽數據
         */
        private initData2Tabbar() : void{
            this._data2TabBar_arr = [
                {
                    _index : 0,
                    _selected : true,
                    _yes_txt_res : "A_1_png",
                    _no_txt_res : "A_0_png"
                },
                {
                    _index : 1,
                    _selected : false,
                    _yes_txt_res : "B_1_png",
                    _no_txt_res : "B_0_png"
                }
            ];
            this._cur_index2TabBar = 0;
        }

        /**
         * 初始化頁簽
         */
        private initView2Tabbar() : void{
            this.initData2Tabbar();
            this.bar_target.itemRenderer = common_TabBarCell;
            this.bar_target.dataProvider = new eui.ArrayCollection( this._data2TabBar_arr );
            this.channelChange();
        }

        /**
         * 頻道切換(顯隱)
         */
        private channelChange() : void{
            let $cell : eui.Group = null;
            for( let $i : number = 0 , $j : number = this._all_channel.length ; $i < $j ; $i ++ ){
                $cell = this._all_channel[$i];
                $cell.visible = $i == this._cur_index2TabBar;
            }
        }

        /**
         * 銷毀
         */
        public destory() : void{
            this.handlerListener2Tabber(false);
        }
    }
}

六 : 效果
Egret之Tabbar通用頁簽

Egret之Tabbar通用頁簽

2.0版優化 - 對eui.ArrayCollection 數據進行更新也可以實行頁簽的狀態切換

module app{
    import common_TabBarCell = common.common_TabBarCell;
    import common_TabBarCell_Data = common.common_TabBarCell_Data;
    /**
     * 此UI面板測試通用的Tabbar頁簽Cell
     * @author Husz
     */
    export class TabBarDemoView extends eui.Component implements eui.UIComponent{
        private bar_target : eui.TabBar = null;
        private con_0 : eui.Group = null;
        private con_1 : eui.Group = null;

        private _data2TabBar_arr : Array<common_TabBarCell_Data> = null;
        private _cur_index2TabBar : number = 0;
        private _all_channel : Array<eui.Group> = null;

        private _arrayCollection : eui.ArrayCollection = null;

        public constructor(){
            super();
            this.skinName = "resource/eui_skins/TabBarDemoSkin.exml";
        }

        protected childrenCreated():void{
            super.childrenCreated();
            this._all_channel = [
                this.con_0,
                this.con_1
            ];
            this.handlerListener2Tabber( true );
            this.initView2Tabbar();
        }

        private handlerListener2Tabber( $isAdd : boolean ) : void{
            if( $isAdd ){
                if( !this.bar_target.hasEventListener(eui.ItemTapEvent.ITEM_TAP) )
                    this.bar_target.addEventListener( eui.ItemTapEvent.ITEM_TAP , this.onTabbarItemClick , this  );
            }else{
                if( this.bar_target.hasEventListener(eui.ItemTapEvent.ITEM_TAP) )
                    this.bar_target.removeEventListener( eui.ItemTapEvent.ITEM_TAP , this.onTabbarItemClick , this  );
            }
        }

        /**
         * 處理頁簽切換
         * @param {eui.ItemTapEvent} $e
         */
        private onTabbarItemClick( $e : eui.ItemTapEvent ) : void{
            if( this._cur_index2TabBar != $e.itemIndex ){
                this._cur_index2TabBar = $e.itemIndex;
                let $dataCell : common_TabBarCell_Data = null;
                let $count : number = 0;
                for( let $i : number = 0 , $j :number = this._data2TabBar_arr.length ; $i < $j ; $i ++ ){
                    $dataCell = this._data2TabBar_arr[$i];
                    if( $dataCell._index == this._cur_index2TabBar ){
                        $dataCell._selected = true;
                        this._arrayCollection.replaceItemAt( $dataCell , $i );
                        $count ++;
                    }else{
                        if( $dataCell._selected != false ){
                            $dataCell._selected = false;
                            this._arrayCollection.replaceItemAt( $dataCell , $i );
                            $count ++;
                        }
                    }
                    if($count >= 2){
                        break;
                    }
                }
                //切換頻道
                this.channelChange();
                // this.bar_target.dataProvider = new eui.ArrayCollection( this._data2TabBar_arr );
            }
        }

        /**
         * 初始化頁簽數據
         */
        private initData2Tabbar() : void{
            this._data2TabBar_arr = [
                {
                    _index : 0,
                    _selected : true,
                    _yes_txt_res : "A_1_png",
                    _no_txt_res : "A_0_png"
                },
                {
                    _index : 1,
                    _selected : false,
                    _yes_txt_res : "B_1_png",
                    _no_txt_res : "B_0_png"
                }
            ];
            this._arrayCollection = new eui.ArrayCollection( this._data2TabBar_arr );
            this._cur_index2TabBar = 0;
        }

        /**
         * 初始化頁簽
         */
        private initView2Tabbar() : void{
            this.initData2Tabbar();
            this.bar_target.itemRenderer = common_TabBarCell;
            this.bar_target.dataProvider = this._arrayCollection;
            this.channelChange();
        }

        /**
         * 頻道切換(顯隱)
         */
        private channelChange() : void{
            let $cell : eui.Group = null;
            for( let $i : number = 0 , $j : number = this._all_channel.length ; $i < $j ; $i ++ ){
                $cell = this._all_channel[$i];
                $cell.visible = $i == this._cur_index2TabBar;
            }
        }

        /**
         * 銷毀
         */
        public destory() : void{
            this.handlerListener2Tabber(false);
        }
    }
}

Egret之Tabbar通用頁簽

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三河市| 垫江县| 高安市| 上林县| 金沙县| 沙坪坝区| 蓝山县| 肇源县| 余庆县| 邯郸市| 聂荣县| 藁城市| 花垣县| 镇安县| 太白县| 江孜县| 两当县| 台南市| 白朗县| 区。| 雅安市| 咸宁市| 湘潭县| 海阳市| 元阳县| 仙游县| 秦皇岛市| 沂源县| 屯门区| 扶沟县| 洪泽县| 民丰县| 开平市| 克山县| 钟祥市| 彭阳县| 高州市| 勐海县| 辛集市| 五台县| 永丰县|