require("Base/BasePanel") HandBookHeroInfoPanel = Inherit(BasePanel) local this = HandBookHeroInfoPanel local heroConFigData local leftHeroData local rightHeroData local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local heroLevelConfig = ConfigManager.GetConfig(ConfigName.HeroLevelConfig) local itemConfig=ConfigManager.GetConfig(ConfigName.ItemConfig) local allAddProVal = {} local isClickLeftOrRightBtn = true local index=0 local leftIndex=0 local rightIndex=0 local starType = 1 local type = 1 local _leftStar=0 local _curStar=0 local _rightStar=0 --初始化组件(用于子类重写) function HandBookHeroInfoPanel:InitComponent() self.btnBack = Util.GetGameObject(self.transform, "btnBack") self.bgImageList = {} for i = 1, 4 do self.bgImageList[i] = Util.GetGameObject(self.transform, "bg/di ("..i..")") end self.curObj= Util.GetGameObject(self.transform, "curObj") self.leftObj= Util.GetGameObject(self.transform, "leftObj") self.rightObj= Util.GetGameObject(self.transform, "rightObj") self.leftBtn = Util.GetGameObject(self.transform, "leftBtn/GameObject") self.rightBtn = Util.GetGameObject(self.transform, "rightBtn/GameObject") self.dragView = SubUIManager.Open(SubUIConfig.DragView, self.gameObject.transform) self.dragView.transform:SetSiblingIndex(1) self.starGrid = Util.GetGameObject(self.transform, "info/sartAndLvLayout/starGrid") self.heroName = Util.GetGameObject(self.transform, "info/nameAndPossLayout/heroName"):GetComponent("Text") self.profession = Util.GetGameObject(self.transform, "info/nameAndPossLayout/proImage/proImage"):GetComponent("Image") --定位描述 self.posBgImage=Util.GetGameObject(self.transform,"pos"):GetComponent("Image") self.posImage=Util.GetGameObject(self.transform,"pos/posImage"):GetComponent("Image") self.posText=Util.GetGameObject(self.transform,"pos/posText"):GetComponent("Text") --详情 Util.GetGameObject(self.transform,"roleInfoLayout/pro/atk/proName"):GetComponent("Text").text = propertyConfig[2].Info Util.GetGameObject(self.transform,"roleInfoLayout/pro/hp/proName"):GetComponent("Text").text = propertyConfig[1].Info Util.GetGameObject(self.transform,"roleInfoLayout/pro/phyDef/proName"):GetComponent("Text").text = propertyConfig[3].Info Util.GetGameObject(self.transform,"roleInfoLayout/pro/magDef/proName"):GetComponent("Text").text = propertyConfig[4].Info -- Util.GetGameObject(self.transform,"roleInfoLayout/pro/speed/proName"):GetComponent("Text").text = propertyConfig[5].Info self.atkPro=Util.GetGameObject(self.transform,"roleInfoLayout/pro/atk/proValue"):GetComponent("Text") self.hpPro=Util.GetGameObject(self.transform,"roleInfoLayout/pro/hp/proValue"):GetComponent("Text") self.phyDef=Util.GetGameObject(self.transform,"roleInfoLayout/pro/phyDef/proValue"):GetComponent("Text") self.magDef=Util.GetGameObject(self.transform,"roleInfoLayout/pro/magDef/proValue"):GetComponent("Text") -- self.speed=Util.GetGameObject(self.transform,"roleInfoLayout/pro/speed/proValue"):GetComponent("Text") self.skillGrid=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill/skill") self.selsectSkillImage=Util.GetGameObject(self.transform,"roleInfoLayout/selsectSkillImage") self.allProButton=Util.GetGameObject(self.transform,"roleInfoLayout/allProButton") --定位 -- self.location=Util.GetGameObject(self.transform,"roleInfoLayout/Location") -- self.infoText=Util.GetGameObject(self.location,"Info"):GetComponent("Text") -- self.radar = Util.GetGameObject(self.location, "ProRadarImage/Radar"):GetComponent("RadarChart") self.skillName=Util.GetGameObject(self.transform,"roleInfoLayout/skillName") self.skillLine=Util.GetGameObject(self.transform,"roleInfoLayout/skillLine") self.talismanBtn=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanBtn") -- self.talismanFrame=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanBtn"):GetComponent("Image") self.talismanIcon=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanBtn/Icon"):GetComponent("Image") -- self.talismanInfo=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/TalismanInfo") self.btnStart = Util.GetGameObject(self.transform, "btnList/btnStart") self.btnMaxStar = Util.GetGameObject(self.transform, "btnList/btnMaxStar") self.btnMaxStar.gameObject:SetActive(false) self.btnSkin = Util.GetGameObject(self.transform, "btnList/btnSkin") self.selectBtn = Util.GetGameObject(self.transform, "btnList/selectBtn") self.roleInfoLayout = Util.GetGameObject(self.transform,"roleInfoLayout") self.roleStoryLayout = Util.GetGameObject(self.transform,"roleStoryLayout") --传记 self.btnStory = Util.GetGameObject(self.transform, "btnList/btnStory") self.infoTextStory = Util.GetGameObject(self.transform,"roleStoryLayout/infoBg/infoRect/infoText"):GetComponent("Text") this.trigger=Util.GetEventTriggerListener(self.dragView.gameObject) this.trigger.onBeginDrag = this.trigger.onBeginDrag + this.OnBeginDrag this.trigger.onDrag = this.trigger.onDrag + this.OnDrag this.trigger.onEndDrag = this.trigger.onEndDrag + this.OnEndDrag this.talentBtn=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/talentBtn") this.talentProgress=Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Other/talentBtn/progress"):GetComponent("Text") this.posBtn=Util.GetGameObject(self.gameObject,"posBtn")--定位按钮 end --绑定事件(用于子类重写) function HandBookHeroInfoPanel:BindEvent() Util.AddClick(self.btnBack, function() self:ClosePanel() end) Util.AddClick(self.allProButton, function() UIManager.OpenPanel(UIName.RoleProInfoPopup,allAddProVal,heroConFigData,false) end) Util.AddClick(self.btnStart, function() self:SetSelectBtn(self.btnStart, Language[11097]) if _curStar and _curStar>5 then self:OnShowHeroData(1,2,_curStar) else self:OnShowHeroData(1,1,heroConFigData.Star) end end) Util.AddClick(self.btnMaxStar, function() self:SetSelectBtn(self.btnMaxStar, Language[11098]) if heroConFigData.RankupConsumeMaterial and #heroConFigData.RankupConsumeMaterial > 0 then self:OnShowHeroData(1,2,heroConFigData.RankupConsumeMaterial[#heroConFigData.RankupConsumeMaterial][1]) else self:OnShowHeroData(1,2,heroConFigData.Star) end end) Util.AddClick(self.btnStory, function() self:SetSelectBtn(self.btnStory, Language[12158]) self:OnShowHeroData(2,1,heroConFigData.Star) end) Util.AddClick(self.btnSkin, function() PopupTipPanel.ShowTip(Language[11100]) end) Util.AddClick(this.leftBtn, function() self:LeftBtnOnClick() end) Util.AddClick(this.rightBtn, function() self:RightBtnOnClick() end) Util.AddClick(this.posBtn, function() UIManager.OpenPanel(UIName.RolePosInfoPopup,heroConFigData) end) end local heroDatas = {} --界面打开时调用(用于子类重写) 第一个参数 英雄数据 第二个参数 属性id function HandBookHeroInfoPanel:OnOpen(...) local temp={...} heroDatas = {} --[[for id, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.HeroConfig)) do if (temp[2]==0 or v.PropertyName == temp[2]) then table.insert(heroDatas,v) end end self:SortHeroNatural(heroDatas)]] heroConFigData = temp[1] if(temp[3]) then _curStar=temp[3] end heroDatas=PlayerManager.heroHandBookListData[_curStar] for n,m in ipairs(heroDatas) do if heroConFigData.Id==m.Id then index=n else index=1 end end end --界面打开或者重新打开后,界面刷新时调用(用于子类重写) function HandBookHeroInfoPanel:OnShow() isClickLeftOrRightBtn = true for i = 1, #heroDatas do if heroConFigData.Id == heroDatas[i].Id then index = i end end self:UpdateLiveList() this.leftLiveObj = this:LoadHerolive(leftHeroData,self.leftObj) this.rightLiveObj = this:LoadHerolive(rightHeroData,self.rightObj) this.curLiveObj = this:LoadHerolive(heroConFigData,self.curObj) if _curStar and _curStar > 5 then self:OnShowHeroData(1,2,_curStar) else self:OnShowHeroData(1,1,heroConFigData.Star) end self:SetSelectBtn(self.btnStart, Language[11097]) --self.curLiveObj = self:LoadHerolive(heroConFigData,self.curObj) self.dragView:SetDragGO(this.curLiveObj) end --展示英雄信息 第一个参数1 属性面板 2 故事面板 第二个参数 1初始 2 6星和10星 第三个参数 显示星级 function HandBookHeroInfoPanel:OnShowHeroData(_type,_starType,_star) for i = 1, 4 do if heroConFigData.PropertyName == i then self.bgImageList[i]:SetActive(true) else self.bgImageList[i]:SetActive(false) end end self.dragView:SetDragGO(this.curLiveObj) type = _type self.roleInfoLayout:SetActive( _type == 1) self.roleStoryLayout:SetActive( _type == 2) SetHeroStars(self.starGrid, _star) self.heroName.text = heroConFigData.ReadingName self.profession.sprite =Util.LoadSprite(GetProStrImageByProNum(heroConFigData.PropertyName)) --定位描述相关 self.posBgImage.sprite=Util.LoadSprite(GetHeroPosBgStr(heroConFigData.Profession)) self.posImage.sprite=Util.LoadSprite(GetHeroPosStr(heroConFigData.Profession)) self.posText.text=heroConFigData.HeroLocation this.talentBtn:SetActive(heroConFigData.OpenPassiveSkillRules ~= nil) --self.quality.sprite=Util.LoadSprite(GetQualityIconByQualityNumer(heroConFigData.Natural)) --计算面板属性 allAddProVal=self:CalculateHeroAllProValList(_starType,_star) self.atkPro.text=allAddProVal[HeroProType.Attack] self.hpPro.text=allAddProVal[HeroProType.Hp] self.phyDef.text=allAddProVal[HeroProType.PhysicalDefence] self.magDef.text=allAddProVal[HeroProType.MagicDefence] --技能点击特殊处理 self.selsectSkillImage:SetActive(false) self.skillGrid:GetComponent("Canvas").sortingOrder = self.sortingOrder + 1 local triggerCallBack local skillList = HeroManager.GetCurHeroSidAndCurStarAllSkillDatas(heroConFigData.Id,_star) for i = 1, self.skillGrid.transform.childCount do self.skillGrid.transform:GetChild(i-1).gameObject:SetActive(false) end for i = 1, #skillList do if skillList[i] and skillList[i].skillConfig and skillList[i].skillConfig.Name then local go = self.skillGrid.transform:GetChild(i-1).gameObject go:SetActive(true) Util.GetGameObject(go.transform,"s"):GetComponent("Image").sprite=Util.LoadSprite(GetResourcePath(skillList[i].skillConfig.Icon)) Util.GetGameObject(go.transform,"s/Text"):GetComponent("Text").text=skillList[i].skillConfig.Name--Language[10470].. 1(skillList[i].skillConfig.Id % 10) Util.GetGameObject(go.transform,"SkillTypeImage"):GetComponent("Image").sprite=Util.LoadSprite(GetSkillType(skillList[i])) Util.AddOnceClick(Util.GetGameObject(go.transform,"s"), function() if Game.GlobalEvent:HasEvent(GameEvent.UI.OnClose, triggerCallBack) then Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack) end self.selsectSkillImage:SetActive(true) self.selsectSkillImage.transform.position=Util.GetGameObject(go.transform,"s").transform.position local skillData = {} skillData.skillConfig = skillList[i].skillConfig local maxLv= HeroManager.GetHeroSkillMaxLevel(heroConFigData.Id,skillData.skillConfig.Type) local panel = UIManager.OpenPanel(UIName.SkillInfoPopup,skillData,1,10,maxLv,i) self.skillGrid:GetComponent("Canvas").sortingOrder = panel.sortingOrder + 1 triggerCallBack = function (panelType, p) if panelType == UIName.SkillInfoPopup and panel == p then --监听到SkillInfoPopup关闭,把层级设回去 self.skillGrid:GetComponent("Canvas").sortingOrder = self.sortingOrder + 1 Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnClose, triggerCallBack) self.selsectSkillImage:SetActive(false) end end Game.GlobalEvent:AddEvent(GameEvent.UI.OnClose, triggerCallBack) end) end end --定位 this.posBtn.gameObject:SetActive(heroConFigData.ShowHeroLocation==1) -- self.infoText.text = heroConFigData.HeroLocation -- self.radar:SetEdges({heroConFigData.AttackScale/100,heroConFigData.DefenseScale/100,heroConFigData.AssistScale/100}) -- self.radar.color = Color.New(238/255,211/255,156/255,102/255) -- PlayUIAnim(self.location,function () --Log("end!!!!!") -- end) --技能 布局变动 self.skillLine.gameObject:SetActive(not (heroConFigData.OpenPassiveSkillRules == nil and heroConFigData.EquipTalismana==nil)) if heroConFigData.OpenPassiveSkillRules == nil and heroConFigData.EquipTalismana==nil then Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill"):GetComponent("LayoutElement").minWidth=500 Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill/skill"):GetComponent("GridLayoutGroup").startAxis=0 self.skillName.transform:DOAnchorPos(Vector3.New(442,308,0),0) else Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill"):GetComponent("LayoutElement").minWidth=150 Util.GetGameObject(self.transform,"roleInfoLayout/Panel/Skill/skill"):GetComponent("GridLayoutGroup").startAxis=1 self.skillName.transform:DOAnchorPos(Vector3.New(274,308,0),0) end --法宝 self.talismanBtn.gameObject:SetActive(heroConFigData.EquipTalismana~=nil) -- self.talismanInfo.gameObject:SetActive(heroConFigData.EquipTalismana==nil) if heroConFigData.EquipTalismana~=nil then -- self.talismanFrame.sprite=Util.LoadSprite(TalismanBubble[itemConfig[heroConFigData.EquipTalismana[2]].Quantity]) self.talismanIcon.sprite = Util.LoadSprite(GetResourcePath(itemConfig[heroConFigData.EquipTalismana[2]].ResourceID)) end --法宝 Util.AddOnceClick(self.talismanBtn.gameObject,function() if starType==1 then UIManager.OpenPanel(UIName.TalismanInfoPopup,heroConFigData,1,1) elseif starType==2 then UIManager.OpenPanel(UIName.TalismanInfoPopup,heroConFigData,1,75) end end) --传记 Util.GetGameObject(self.transform,"roleStoryLayout/infoBg/infoRect/infoText"):GetComponent("RectTransform").anchoredPosition = Vector2.New(-2, 0) local stroyStr = string.gsub(heroConFigData.HeroStory,"#","\n") self.infoTextStory.text = string.gsub(stroyStr,"|","  ")--传记 end --根据界面数据加载动态立绘 function HandBookHeroInfoPanel:LoadHerolive(_heroData, _objPoint) --TODO:动态加载立绘 local testLive = poolManager:LoadLive(GetResourcePath(_heroData.Live), _objPoint.transform, Vector3.one * _heroData.Scale, Vector3.New(_heroData.Position[1], _heroData.Position[2], 0)) local SkeletonGraphic = testLive:GetComponent("SkeletonGraphic") local idle = function() SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) end SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idle poolManager:SetLiveClearCall(_heroData.Live, testLive, function () SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idle end) return testLive end --计算英雄属性 1 初始 2 指定星级 _starNum星级变化 function HandBookHeroInfoPanel:CalculateHeroAllProValList(_starType,_starNum) local allAddProVal = {} for i, v in ConfigPairs(propertyConfig) do allAddProVal[i] = 0 end local heroRankupConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.HeroRankupConfig, "Star", heroConFigData.Star, "LimitStar", _starNum) local curLvNum=1 local breakId = 0 local upStarId = 0 if _starType == 2 then --等级 curLvNum = heroRankupConfig.OpenLevel --解锁天赋 for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.HeroRankupConfig)) do if v.OpenStar == _starNum and v.Star==heroConFigData.Star then if v.Type == 1 then breakId = v.Id end if v.Type == 2 then upStarId = v.Id end end end if breakId==0 then breakId=6 end end allAddProVal[HeroProType.Attack]=HeroManager.CalculateProVal(heroConFigData.Attack, curLvNum, breakId,upStarId,HeroProType.Attack) allAddProVal[HeroProType.Hp]=HeroManager.CalculateProVal(heroConFigData.Hp, curLvNum, breakId,upStarId,HeroProType.Hp) allAddProVal[HeroProType.PhysicalDefence]=HeroManager.CalculateProVal(heroConFigData.PhysicalDefence, curLvNum, breakId,upStarId,HeroProType.PhysicalDefence) allAddProVal[HeroProType.MagicDefence]=HeroManager.CalculateProVal(heroConFigData.MagicDefence, curLvNum, breakId,upStarId,HeroProType.MagicDefence) --allAddProVal[HeroProType.Speed]= math.floor(((curSpeedFormulaData[1] * math.pow(breakId, 3) + curSpeedFormulaData[2] * math.pow(breakId, 2) + curSpeedFormulaData[3] * breakId + curSpeedFormulaData[4]) + heroConFigData.Speed * speedNum)) --for i = 1, #heroConFigData.SecondaryFactor do -- local proId = heroConFigData.SecondaryFactor[i][1] -- if propertyConfig[proId].Style ==2 then -- allAddProVal[heroConFigData.SecondaryFactor[i][1]] = heroConFigData.SecondaryFactor[i][2]/10000 -- else -- allAddProVal[heroConFigData.SecondaryFactor[i][1]] = heroConFigData.SecondaryFactor[i][2] -- end --end Util.AddOnceClick(this.talentBtn,function() UIManager.OpenPanel(UIName.RoleTalentPopup,heroConFigData,breakId,upStarId) end) if heroConFigData.OpenPassiveSkillRules then local openlists,compoundOpenNum,compoundNum = HeroManager.GetAllPassiveSkillIds(heroConFigData,breakId,upStarId) this.talentProgress.text = #openlists - compoundOpenNum .."/"..#heroConFigData.OpenPassiveSkillRules - compoundNum end return allAddProVal end --页签选中效果设置 function HandBookHeroInfoPanel:SetSelectBtn(_btn, btnText) self.selectBtn.transform:SetParent(_btn.transform) self.selectBtn.transform.localScale = Vector3.one self.selectBtn.transform.localPosition=Vector3.zero Util.GetGameObject(self.selectBtn.transform, "Text"):GetComponent("Text").text = btnText end function HandBookHeroInfoPanel:UpdateLiveList() if index - 1 > 0 then _leftStar = _curStar leftIndex = index - 1 leftHeroData=heroDatas[leftIndex] else if _curStar==10 then _leftStar = 1 elseif _curStar==6 then _leftStar = 10 else _leftStar = _curStar+1 end leftIndex=#PlayerManager.heroHandBookListData[_leftStar] leftHeroData=PlayerManager.heroHandBookListData[_leftStar][leftIndex] end if index + 1 <= #heroDatas then _rightStar = _curStar rightIndex = index + 1 rightHeroData=heroDatas[rightIndex] else if _curStar==10 then _rightStar = 6 elseif _curStar==1 then _rightStar = 10 else _rightStar = _curStar - 1 end rightIndex = 1 rightHeroData=PlayerManager.heroHandBookListData[_rightStar][rightIndex] end end --右切换按钮点击 function HandBookHeroInfoPanel:RightBtnOnClick() if isClickLeftOrRightBtn == false then return end isClickLeftOrRightBtn = false self.rightBtn:GetComponent("Button").enabled = false local oldIndexConfigData = heroDatas[index] index =rightIndex if _curStar ~= _rightStar then _curStar = _rightStar heroDatas = PlayerManager.heroHandBookListData[_curStar] end heroConFigData = heroDatas[index] if this.leftLiveObj then poolManager:UnLoadLive(GetResourcePath(leftHeroData.Live), this.leftLiveObj) this.leftLiveObj = nil end this.curLiveObj.transform:SetParent(self.leftObj.transform) this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(oldIndexConfigData.Position[1],oldIndexConfigData.Position[2]), 0.5, false):SetEase(Ease.Linear) this.rightLiveObj.transform:SetParent(self.curObj.transform) this.rightLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(rightHeroData.Position[1],rightHeroData.Position[2]), 0.5, false):OnComplete(function () this:UpdateLiveList() this.leftLiveObj = this.curLiveObj this.curLiveObj = this.rightLiveObj this.rightLiveObj = this:LoadHerolive(rightHeroData,self.rightObj) if _curStar and _curStar > 5 then --[[ if heroConFigData.RankupConsumeMaterial and #heroConFigData.RankupConsumeMaterial > 0 then self:OnShowHeroData(type,2,heroConFigData.RankupConsumeMaterial[#heroConFigData.RankupConsumeMaterial][1]) else]] self:OnShowHeroData(type,2,_curStar) --end else self:OnShowHeroData(1,1,heroConFigData.Star) end local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic") SkeletonGraphic.AnimationState:SetAnimation(0, "touch", false) this.rightBtn:GetComponent("Button").enabled = true isClickLeftOrRightBtn = true end):SetEase(Ease.Linear) end --左切换按钮点击 function HandBookHeroInfoPanel:LeftBtnOnClick() if isClickLeftOrRightBtn == false then return end isClickLeftOrRightBtn = false self.leftBtn:GetComponent("Button").enabled = false local oldIndexConfigData = heroDatas[index] index =leftIndex if _curStar~= _leftStar then _curStar = _leftStar heroDatas = PlayerManager.heroHandBookListData[_curStar] end heroConFigData = heroDatas[index] if this.rightLiveObj then poolManager:UnLoadLive(GetResourcePath(rightHeroData.Live), this.rightLiveObj) this.rightLiveObj = nil end this.curLiveObj.transform:SetParent(self.rightObj.transform) this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(oldIndexConfigData.Position[1],oldIndexConfigData.Position[2]), 0.5, false):SetEase(Ease.Linear) this.leftLiveObj.transform:SetParent(self.curObj.transform) this.leftLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(leftHeroData.Position[1],leftHeroData.Position[2]), 0.5, false):OnComplete(function () this:UpdateLiveList() this.rightLiveObj = this.curLiveObj this.curLiveObj = this.leftLiveObj this.leftLiveObj = this:LoadHerolive(leftHeroData,self.leftObj) if _curStar and _curStar > 5 then --[[if heroConFigData.RankupConsumeMaterial and #heroConFigData.RankupConsumeMaterial > 0 then self:OnShowHeroData(type,2,heroConFigData.RankupConsumeMaterial[#heroConFigData.RankupConsumeMaterial][1]) else]] self:OnShowHeroData(type,2,_curStar) --end else self:OnShowHeroData(type,1,heroConFigData.Star) end local SkeletonGraphic = this.curLiveObj:GetComponent("SkeletonGraphic") SkeletonGraphic.AnimationState:SetAnimation(0, "touch", false) this.leftBtn:GetComponent("Button").enabled = true isClickLeftOrRightBtn = true end):SetEase(Ease.Linear) end --手指滑动 local beginV3 local endV3 local distance function HandBookHeroInfoPanel:OnBeginDrag(Pointgo, data) beginV3=this.curLiveObj.transform.anchoredPosition end function HandBookHeroInfoPanel:OnDrag(Pointgo, data) distance=Vector2.Distance(beginV3,this.curLiveObj.transform.anchoredPosition) end function HandBookHeroInfoPanel:OnEndDrag(Pointgo, data) endV3=this.curLiveObj.transform.anchoredPosition if distance>250 and endV3.x<0 then this:RightBtnOnClick() elseif distance>250 and endV3.x>0 then this:LeftBtnOnClick() else this.curLiveObj:GetComponent("RectTransform"):DOAnchorPos(Vector2.New(heroConFigData.Position[1],heroConFigData.Position[2]), 0.5, false):SetEase(Ease.Linear) end distance=0 end --界面关闭时调用(用于子类重写) function HandBookHeroInfoPanel:OnClose() if this.leftLiveObj then poolManager:UnLoadLive(GetResourcePath(leftHeroData.Live), this.leftLiveObj) this.leftLiveObj = nil end if this.rightLiveObj then poolManager:UnLoadLive(GetResourcePath(rightHeroData.Live), this.rightLiveObj) this.rightLiveObj = nil end if this.curLiveObj then poolManager:UnLoadLive(GetResourcePath(heroConFigData.Live), this.curLiveObj) this.curLiveObj = nil end this.leftBtn:GetComponent("Button").enabled = true this.rightBtn:GetComponent("Button").enabled = true end function HandBookHeroInfoPanel:SortHeroNatural(heroList) table.sort(heroList, function(a, b) if a.Star == b.Star then if a.Natural == b.Natural then return a.Id < b.Id else return a.Natural > b.Natural end else return a.Star > b.Star end end) end --界面销毁时调用(用于子类重写) function HandBookHeroInfoPanel:OnDestroy() SubUIManager.Close(SubUIConfig.DragView, self.dragView) end return HandBookHeroInfoPanel