SpecialSkillView = PassiveSkillView or BaseClass(BaseItem) SpecialSkillView.POS_MAX = 5 function SpecialSkillView:__init(parent_wnd, prefab_asset, layer_name) self.base_file = "skillUI" self.layout_file = "SpecialSkillView" -- self.full_screen = true -- self.ani_right = 400 -- self.adjust_mid = {left = 0, right = 650} self.model = SkillManager:getInstance() self.skillui_model = SkillUIModel:getInstance() self.skill_item_list = {} self.pos_table = false self.skill_id_list = self.skillui_model:GetAllSpecialSkillList() self.select_index = false self:Load() end --清除界面 function SpecialSkillView:__delete() self:Remove() end function SpecialSkillView:Load_callback() self:LoadSuccess() self:InitEvent() self:UpdateSkillList() end function SpecialSkillView:Remove() for i,v in ipairs(self.skill_item_list) do v:DeleteMe() end self.skill_item_list = {} end function SpecialSkillView:LoadSuccess() local nodes = { "mid/skill_list_con","mid/bg/bg2:raw", } self:GetChildren(nodes) self.pos_table = {} for i=1,SkillConfigView.POS_MAX do self.pos_table[i] = self:GetChild("mid/skill_list_con/pos_" .. i) end if self.need_refreshData then self:SetData() end lua_resM:setOutsideRawImage(self, self.bg2_raw, GameResPath.GetSkillViewBg("skill_ui_bg_4"), false) end function SpecialSkillView:InitEvent() local function onClickSkillItem(view_index, skill_id, pos) if view_index == SkillUIModel.Click_SkillItem.SpecialList then self:OnClickItem(pos) end end self:BindEvent(self.skillui_model,SkillUIModel.CLICK_SKILL_ITEM,onClickSkillItem) local function onUpdateSkillList() self:UpdateSkillList() end self:BindEvent(self.model,SkillManager.UPDATE_SKILL_LIST,onUpdateSkillList) local function onChangeBagListHandler() self:UpdateSkillList() end self:BindEvent(GoodsModel:getInstance(),GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler) end function SpecialSkillView:UpdateSkillList() for i=1,SpecialSkillView.POS_MAX do local id = self.skill_id_list[i] local item = self.skill_item_list[i] if not item then item = SkillUIItem.New(self.pos_table[i],nil,self.maskID) item:SetUseFor("SpecialSkillView") self.skill_item_list[i] = item end item:SetVisible(true) item:SetSelect(self.select_index == i) local skill_vo = self.model:getSkill(id) item:SetData(skill_vo, i, SkillUIModel.Click_SkillItem.SpecialList ,false) item:ShowRedDot(skill_vo:CanUp()) end end function SpecialSkillView:OnClickItem(index) if self.select_index == nil then return end self.select_index = index for i,v in ipairs(self.skill_item_list) do v:SetSelect(self.select_index == i) end end function SpecialSkillView:SetData() self.select_index = self.select_index or 1 if self.is_loaded then self.skillui_model:Fire(SkillUIModel.CLICK_SKILL_ITEM, SkillUIModel.Click_SkillItem.SpecialList, self.skill_id_list[self.select_index], self.select_index) else self.need_refreshData = true end end