"use strict"; cc._RF.push(module, '4aad6uJw3dDlI0AEspLBCTj', 'vedio_main_window'); // Scripts/mod/vedio/view/vedio_main_window.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里是描述这个窗体的作用的 //
Create: 2019-05-16 19:12:27 // -------------------------------------------------------------------- var PathTool = require("pathtool"); var CommonScrollView = require("common_scrollview"); var VedioMainItem = require("vedio_item_panel"); var VedioConst = require("vedio_const"); var CommonTabBtn = require("common_tab_btn"); var VedioController = require("vedio_controller"); var VedioEvent = require("vedio_event"); var RoleController = require("role_controller"); var ChatConst = require("chat_const"); var VedioMainWindow = cc.Class({ "extends": BaseView, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("vedio", "vedio_main_window"); // this.viewTag = SCENE_TAG.dialogue; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意 this.win_type = WinType.Full; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips this.ctrl = VedioController.getInstance(); this._model = this.ctrl.getModel(); }, // 初始化一些配置数据,可以用于声明一些变量之类的 initConfig: function initConfig() { this.req_flag = false; // 是否正在请求数据(避免滑到底部多次请求) this.filt_index_list = {}; //记录各页签当前选中的筛选下标 this.filt_btn_list = []; this.vedio_data = {}; // -- 当前选中的类型、条件的录像数 }, // 预制体加载完成之后的回调,可以在这里捕获相关节点或者组件 openCallBack: function openCallBack() { var self = this; self.background = self.root_wnd.getChildByName("background"); self.background.scale = FIT_SCALE; this.loadRes(PathTool.getUIIconPath("bigbg", "bigbg_2", "jpg"), function (res) { self.background.getComponent(cc.Sprite).spriteFrame = res; }.bind(this)); self.mainContainer = self.root_wnd.getChildByName("main_container"); self.share_panel = self.mainContainer.getChildByName("share_panel"); self.share_panel.active = false; self.share_bg = self.share_panel.getChildByName("share_bg"); self.btn_guild = self.share_bg.getChildByName("btn_guild"); self.btn_world = self.share_bg.getChildByName("btn_world"); self.btn_guild.getChildByName("guild_label").getComponent(cc.Label).string = Utils.TI18N("分享到公会频道"); self.btn_world.getChildByName("world_label").getComponent(cc.Label).string = Utils.TI18N("分享到世界频道"); self.main_panel = self.mainContainer.getChildByName("main_panel"); self.main_panel.getChildByName("win_title").getComponent(cc.Label).string = Utils.TI18N("录像馆"); self.like_limit_num = self.main_panel.getChildByName("like_limit_num").getComponent(cc.Label); self.like_limit_num.string = ""; self.close_btn = self.main_panel.getChildByName("close_btn"); self.collect_btn = self.main_panel.getChildByName("collect_btn"); self.collect_btn.getChildByName("label").getComponent(cc.Label).string = Utils.TI18N("个人收藏"); self.myself_btn = self.main_panel.getChildByName("myself_btn"); self.myself_btn.getChildByName("label").getComponent(cc.Label).string = Utils.TI18N("个人记录"); self.no_vedio_image = self.main_panel.getChildByName("no_vedio_image"); self.arrow = self.main_panel.getChildByName("arrow"); var filt_bg = self.main_panel.getChildByName("filt_bg"); self.filt_label = filt_bg.getChildByName("filt_label").getComponent(cc.Label); self.filt_btn = filt_bg.getChildByName("filt_btn"); self.filt_lv_btn = self.main_panel.getChildByName("filt_lv_btn"); self.filt_lv_btn.getComponent(cc.Toggle).isChecked = this._model.getFiltLevelFlag(); self.filt_lv_btn.getChildByName("name").getComponent(cc.Label).string = Utils.TI18N("筛选临近等级"); var scrollCon = self.main_panel.getChildByName("scrollCon"); var bgSize = scrollCon.getContentSize(); var scroll_view_size = cc.size(bgSize.width - 10, bgSize.height - 10); var setting = { item_class: VedioMainItem, start_x: 0, //-- 第一个单元的X起点 space_x: 0, //-- x方向的间隔 start_y: 0, //-- 第一个单元的Y起点 space_y: 3, //-- y方向的间隔 item_width: 620, //-- 单元的尺寸width item_height: 374, //-- 单元的尺寸height row: 0, //-- 行数,作用于水平滚动类型 col: 1, //-- 列数,作用于垂直滚动类型 need_dynamic: true }; this.vedio_scrollview = new CommonScrollView(); this.vedio_scrollview.createScroll(scrollCon, cc.v2(4.5, 5), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting); //common_scrollview_single有bug暂时不用 // this.vedio_scrollview.registerScriptHandlerSingle(self._createNewCell.bind(this), ScrollViewFuncType.CreateNewCell) //--创建cell // self.vedio_scrollview.registerScriptHandlerSingle(self._numberOfCells.bind(this), ScrollViewFuncType.NumberOfCells) //--获取数量 // this.vedio_scrollview.registerScriptHandlerSingle(self._updateCellByIndex.bind(this), ScrollViewFuncType.UpdateCellByIndex) //--更新cell this.createTabBtnList(); }, _createNewCell: function _createNewCell() { var cell = new VedioMainItem(); cell.addCallBack(this._onClickShareBtn.bind(this)); cell.show(); return cell; }, _numberOfCells: function _numberOfCells() { if (!this.vedio_show_data) return 0; return this.vedio_show_data.length; }, _updateCellByIndex: function _updateCellByIndex(cell, index) { if (!this.vedio_show_data) return; cell.index = index; var cell_data = this.vedio_show_data[index]; if (!cell_data) return; if (this.cur_index) { if (this.cur_index == VedioConst.Tab_Index.Hot) { cell.setExtendData({ is_hot: true }); } else { cell.setExtendData({}); } } cell.setData(cell_data); }, createTabBtnList: function createTabBtnList() { // let temp_tab = [] // temp_tab[0] = VedioConst.Tab_Index.Hot; // temp_tab[1] = VedioConst.Tab_Index.Arena; // temp_tab[2] = VedioConst.Tab_Index.Champion; // temp_tab[3] = VedioConst.Tab_Index.Solo; // temp_tab[4] = VedioConst.Tab_Index.Guildwar; // temp_tab[5] = VedioConst.Tab_Index.Ladder; // temp_tab[6] = VedioConst.Tab_Index.Elite; // this.tabArray = [] // for(let i=0;i= left_min_lv && role_vo.lev <= left_max_lv || role_vo.lev >= right_min_lv && role_vo.lev <= right_max_lv) { self.vedio_show_data.push(v); } } } else { self.vedio_show_data = self.vedio_data.vedio_data || []; } if (Utils.next(self.vedio_show_data) != null) { // -- 滑到顶部还是保持位置仅更新数据 if (self.scroll_to_top == true) { // self.vedio_scrollview.reloadData() var extend; if (self.cur_index == VedioConst.Tab_Index.Hot) { extend = { is_hot: true }; } else { extend = {}; } self.vedio_scrollview.setData(self.vedio_show_data, this._onClickShareBtn.bind(this), extend); } else { self.vedio_scrollview.resetCurrentItems(); } self.vedio_scrollview.setVisible(true); self.no_vedio_image.active = false; self.scroll_to_top = false; } else { self.vedio_scrollview.setVisible(false); // self.vedio_scrollview.reloadData() self.vedio_scrollview.setData(self.vedio_show_data, this._onClickShareBtn.bind(this)); self.no_vedio_image.active = false; } }, _onClickShareBtn: function _onClickShareBtn(world_pos, replay_id, share_num, srv_id, combat_type) { var self = this; self.replay_id = replay_id; self.share_num = share_num; self.srv_id = srv_id; self.combat_type = combat_type; var node_pos = self.share_panel.convertToNodeSpaceAR(world_pos); if (node_pos) { self.share_bg.setPosition(cc.v2(node_pos.x - 60, node_pos.y + 45)); self.share_panel.active = true; } }, // -- 点击筛选按钮 _onClickFiltBtn: function _onClickFiltBtn() { var _this2 = this; var self = this; if (self.cur_index) { var vedio_config = Config.video_data.data_vedio[this.cur_index]; if (!vedio_config) return; if (!self.filt_layout) { self.filt_layout = new cc.Node(); self.filt_layout.setContentSize(cc.size(676, 918)); self.filt_layout.setAnchorPoint(0.5, 0.5); self.filt_layout.setPosition(0, 0); self.mainContainer.addChild(self.filt_layout); self.filt_layout.on("touchend", function () { self._onClickFiltBtn(); }); self.filt_bg = Utils.createImage(self.filt_layout, null, 0, 0, cc.v2(1, 1), true, 1, true); self.filt_bg.node.setAnchorPoint(cc.v2(1, 1)); this.loadRes(PathTool.getUIIconPath("common", "common_1092"), function (res) { self.filt_bg.spriteFrame = res; }.bind(this)); self.filt_layout.active = false; } var evt_list = vedio_config.evt || []; for (var k = 0; k < self.filt_btn_list.length; ++k) { var btn = self.filt_btn_list[k]; btn.node.active = false; } var space_y = 0; var distance = 10; var btn_size = cc.size(150, 50); var bg_size = cc.size(166, distance * 2 + evt_list.length * (btn_size.height + space_y) - space_y); self.filt_bg.node.setContentSize(bg_size); var world_pos = self.filt_btn.convertToWorldSpaceAR(cc.v2(0, 0)); var node_pos = self.filt_layout.convertToNodeSpaceAR(world_pos); self.filt_bg.node.setPosition(cc.v2(node_pos.x + 22, node_pos.y - 22)); var _loop2 = function _loop2(i) { var v = evt_list[i]; var btn = self.filt_btn_list[i]; if (btn == null) { btn = {}; var img = Utils.createImage(self.filt_bg.node, null, 0, 0, cc.v2(0.5, 0), true, 1, true); btn.node = img.node; btn.node.setContentSize(btn_size); var button = btn.node.addComponent(cc.Button); button.transition = cc.Button.Transition.SCALE; button.duration = 0.1; button.zoomScale = 0.9; _this2.loadRes(PathTool.getUIIconPath("common", "common_1046"), function (res) { img.spriteFrame = res; }.bind(_this2)); btn.node.on("click", function () { this._onClickFiltItem(i); }.bind(_this2)); var btn_str = new cc.Node().addComponent(cc.Label); btn_str.horizontalAlign = cc.Label.HorizontalAlign.CENTER; btn_str.horizontalAlign = cc.Label.VerticalAlign.CENTER; btn_str.node.y = btn_size.height / 2; btn_str.fontSize = 22; btn_str.lineHeight = 25; btn_str.node.color = new cc.Color(113, 40, 4); btn.node.addChild(btn_str.node); self.filt_btn_list.push(btn); btn.name = btn_str; } btn.name.string = self.getFiltBtnNameByEvt(v); btn.node.active = true; var pos_y = distance + (i + 1) * (btn_size.height + space_y); btn.node.setPosition(cc.v2(-166 / 2, -pos_y)); }; for (var i = 0; i < evt_list.length; ++i) { _loop2(i); } self.filt_layout.active = !self.filt_layout.active; } }, _onClickFiltItem: function _onClickFiltItem(index) { var self = this; if (!self.cur_index) return; var vedio_config = Config.video_data.data_vedio[self.cur_index]; if (vedio_config) { self.filt_index_list[self.cur_index] = index; var evt = vedio_config.evt[index]; var btn_str = self.getFiltBtnNameByEvt(evt); self.filt_label.string = btn_str; self._onClickFiltBtn(); if (self.cur_index != VedioConst.Tab_Index.Elite) { self.vedio_data = {}; self.scroll_to_top = true; // -- 没请求过数据则请求数据,否则直接显示缓存数据 if (!this._model.checkIsReqVedioDataByType(self.cur_index, index)) { this.ctrl.requestPublicVedioData(self.cur_index, index, 1, VedioConst.ReqVedioDataNum); } else { self.setData(); } } } }, // 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象 closeCallBack: function closeCallBack() { if (this.tab_Btn) { for (var i = 0; i < this.tab_Btn.length; ++i) { if (this.tab_Btn) { this.tab_Btn[i].deleteMe(); this.tab_Btn[i] = null; } } } this.tab_Btn = null; if (this.vedio_scrollview) { this.vedio_scrollview.DeleteMe(); this.vedio_scrollview = null; } this.ctrl.openVedioMainWindow(false); } }); cc._RF.pop();