PetStoryView = PetStoryView or BaseClass(BaseView) local PetStoryView = PetStoryView function PetStoryView:__init() self.base_file = "pet" self.layout_file = "PetStoryView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true self.change_scene_close = true self.hide_maincancas = true self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.is_set_zdepth = true self.click_bg_toClose = true self.model = PetModel:getInstance() self.item_list = {} self.story_item_pos = {}--记录storyitem的y轴坐标信息,用于坐标转化 self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function PetStoryView:Open(pet_id) self.pet_id = pet_id BaseView.Open(self) end function PetStoryView:LoadSuccess() local nodes = { "bg:img", "ScrollView/Viewport/Content","ScrollView", } self:GetChildren(nodes) -- lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetPetImage("pet_story_bg")) lua_resM:setImageSprite(self, self.bg_img, "petExtra_asset","pet_story_bg") end function PetStoryView:AddEvent() end function PetStoryView:OpenSuccess() self:UpdateView() end function PetStoryView:UpdateView() local function fold_callback(fold_state,item_id)--进行折叠展开之后的回调,主要是对item位置的重置 local change_pos = fold_state and -146 or 146 local length_list = {} for i, v in ipairs(self.item_list) do if i<=item_id then else v:SetPosition(2.5,self.story_item_pos[i]+change_pos) self.story_item_pos[i] = self.story_item_pos[i]+change_pos end if v.fold_state then length_list[i] = 71+146 else length_list[i] = 71 end end -- SetSizeDeltaY(self.Content, -(self.story_item_pos[1]+self.story_item_pos[2]+self.story_item_pos[3])) SetSizeDeltaY(self.Content, length_list[1]+length_list[2]+length_list[3]+5) end for i, v in ipairs(self.item_list) do v:SetVisible(false) end for i=1,3 do local item = self.item_list[i] if item == nil then item = PetStoryItem.New(self.Content) self.item_list[i] = item end item:SetPosition(2.5,-(i-1)*71) self.story_item_pos[i] = -(i-1)*71 item:SetVisible(true) item:SetData(i,self.pet_id,fold_callback) end local final_index = self.model:GetTheActiveStoryId(self.pet_id) if final_index >=1 and final_index <=3 then self.item_list[final_index]:OnClickFold() end end function PetStoryView:DestroySuccess( ) for i, v in ipairs(self.item_list) do v:DeleteMe() end self.item_list = {} end