CommonAwardFlyView = CommonAwardFlyView or BaseClass(BaseView) local CommonAwardFlyView = CommonAwardFlyView function CommonAwardFlyView:__init() self.base_file = "common" self.layout_file = "CommonAwardFlyView" self.layer_name = "Top" self.destroy_imm = true self.use_background = false self.append_to_ctl_queue = false self.item_list = {} self.item_con_list = {} self.offer_x = 640--X轴偏移量 self.offer_y = -360--X轴偏移量 self.is_set_zdepth = true self.end_offer_x = 0 self.end_offer_y = 0 self.load_callback = function () self:LoadSuccess() self:UpdateView() end self.close_callback = function () self:Remove() end end function CommonAwardFlyView:Remove() for i,v in ipairs(self.item_list) do UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v) end self.item_list = {} for i,v in ipairs(self.item_con_list) do cc.ActionManager:getInstance():removeAllActionsFromTarget(v.transform) end end --target初始节点 --end_target终点节点 -- data = { -- item_list = { -- [1] = {target,end_target,goods_vo}--goods_vo = {type_kind,type_id,type_num}--万一你要显示道具数量那不是坑爹 -- } -- offer_x = 640,整体偏移量 -- offer_y = 360,整体偏移量 -- end_offer_x = 0,--结束位置偏移量 -- end_offer_y = 0,--结束位置偏移量 -- end_func = callback--结束方法 -- times = 2 -- } function CommonAwardFlyView:Open( data ) self.data = data or self.data if not self.data then self:Close() return end self.offer_x = self.data.offer_x or self.offer_x self.offer_y = self.data.offer_y or self.offer_y self.end_offer_x = self.data.end_offer_x or self.end_offer_x self.end_offer_y = self.data.end_offer_y or self.end_offer_y print("huangcong:CommonAwardFlyView [start:45] self.data:", self.data) PrintTable(self.data) print("huangcong:CommonAwardFlyView [end]") BaseView.Open(self) end function CommonAwardFlyView:LoadSuccess() local nodes = { "itemCon" } self:GetChildren(nodes) self:InitEvent() end function CommonAwardFlyView:InitEvent() end function CommonAwardFlyView:UpdateView() if not self.data or not self.data.item_list then self:Close() return end self:UpdateItemList() end --更新道具列表 function CommonAwardFlyView:UpdateItemList( ) local list = self.data.item_list local count = 0 local len = #list for i,v in ipairs(list) do local item = self.item_list[i] if item == nil then local item_transform = UiFactory.createChild(self.transform, UIType.EmptyObject) item_transform.transform.pivot = Vector2(0, 1) item_transform.transform.sizeDelta = Vector2(78, 78) item_transform.transform.anchorMin = Vector2(0, 1) item_transform.transform.anchorMax = Vector2(0, 1) item_transform:SetActive(false) self.item_con_list[i] = item_transform item = UIObjPool:PopItem(UIObjPool.UIType.AwardItem,item_transform.transform) self.item_list[i] = item local goods_vo = v[3] if goods_vo then item:SetData(goods_vo[2],goods_vo[3] or nil) end self:StartAction(item_transform.transform,v[1],v[2],i == len) end end end function CommonAwardFlyView:StartAction( transform,target,end_target,is_end ) if IsNull(target) or IsNull(end_target) then return end --设置初始状态 local start_abs_pos = target.transform:TransformPoint(Vector3.zero) local start_pos = self.transform:InverseTransformPoint(Vector3.New(start_abs_pos.x, start_abs_pos.y, 0)) local end_abs_pos = end_target.transform:TransformPoint(Vector3.zero) local end_pos = self.transform:InverseTransformPoint(Vector3.New(end_abs_pos.x, end_abs_pos.y, 0)) -- new_pos.x = new_pos.x + 145 -- new_pos.y = new_pos.y + 210 -- SetLocalScale(transform,1.1,1.1,1.1) SetAnchoredPosition(transform,start_pos.x + self.offer_x,start_pos.y + self.offer_y) transform.gameObject:SetActive(true) local time = self.data.time or 1 local action = cc.MoveTo.createAnchoredType(time, end_pos.x + self.offer_x + self.end_offer_x, end_pos.y + self.offer_y + self.end_offer_y) local function end_func() transform.gameObject:SetActive(false) -- SetLocalScale(transform,1,1,1) if is_end then--最后要设置已获得 if self.data.end_func then self.data.end_func() end self:Close() end end -- action = cc.Spawn.New(action, cc.ScaleTo.New(time,0.8,0.8,0.8)) action = cc.Sequence.New(action,cc.CallFunc.New(end_func)) cc.ActionManager:getInstance():addAction(action, transform) end